klomp.de

retro arcade, visual pinball cabinet, techblog

Screenshot des CComment Logo aus meinem Joomla BackendNach der Migration von Joomla 3 auf Joomla 4 zickt die Extension CComment (Core und Pro) rum, ein Absenden eines Kommentars führt zu folgender Fehlermeldung: "We are sorry but something went wrong with your request. Try again and if it doesn't work notify the system administrator.". Scheinbar stand ich nicht alleine mit dem Problem da, deshalb hier ein möglicher Lösungsweg.

Vermutlich durch die Aktivierung des MySQL Strict Modes in Joomla 4 kann es nach der Migration Probleme mit dem Kommentar-Tool CComment geben. Dadurch ist es nicht mehr möglich, neue Kommentare abzusenden - diese werden mit obiger Fehlermeldung quittiert. Beim Vergleich der Datenbankstruktur mit einer frischen Joomla 4 Installation mit aktuellen, funktionierenden CComment ist mir aufgefallen, dass sich die Tabellenstruktur zwischenzeitlich geändert hat. 

Im Detail geht es um die Tabelle *_comment, hier wurde u.a. die Definition der Felder ip und customfields geändert.

Eure Tabelle sollte wie folgt definiert sein:

CREATE TABLE `xyz_comment` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`contentid` int(10) NOT NULL DEFAULT '0',
`component` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
`ip` varchar(45) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
`userid` int(10) unsigned NOT NULL DEFAULT '0',
`modified_by` int(10) unsigned NOT NULL DEFAULT '0',
`date` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL,
`name` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
`email` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
`website` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
`notify` tinyint(1) NOT NULL DEFAULT '0',
`title` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
`comment` text COLLATE utf8mb4_unicode_ci NOT NULL,
`published` tinyint(1) NOT NULL DEFAULT '0',
`deleted` tinyint(1) NOT NULL DEFAULT '0',
`spam` tinyint(1) NOT NULL DEFAULT '0',
`voting_yes` int(10) NOT NULL DEFAULT '0',
`voting_no` int(10) NOT NULL DEFAULT '0',
`parentid` int(10) NOT NULL DEFAULT '-1',
`importtable` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
`importid` bigint(10) NOT NULL DEFAULT '0',
`importparentid` bigint(10) NOT NULL DEFAULT '-1',
`unsubscribe_hash` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`moderate_hash` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`customfields` text COLLATE utf8mb4_unicode_ci,
PRIMARY KEY (`id`),
KEY `com_contentid` (`component`,`contentid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

Ich musste inzwischen bei zwei unabhängigen Installationen folgende Änderungen an der vorhanden Tabelle anpassen:

  • Feld ip von varchar(15) auf varchar(45)
  • Feld customfields von NOT NULL auf NULL

Zudem habe ich in dem Zusammenhang laut obiger Definition den Zeichensatz gleich auf utfmb4_unicode_ci geändert. Danach sollte alles wie gehabt funktionieren.

Ach so...wer möchte, kann gerne einen Kommentar hinterlassen. Läuft ja wieder ;)