Moin zusammen und frohes neues!!
Ich bin (wieder mal) am verzweifeln, weil Contao weder bei einer Neuinstallation noch bei einem Update funktioniert. Das Problem tritt bei mehreren Servern auf. Die Installation per Contao Manager läuft korrekt ab, im Install-Tool erscheint nach Klicken auf Aktualisierung der Datenbank die Contao-Fehler-Seite und im Protokoll steht folgender Fehler:
[2019-01-01 18:57:26] request.CRITICAL: Uncaught PHP Exception Doctrine\DBAL\Exception\DriverException: "An exception occurred while executing 'CREATE TABLE tl_newsletter_recipients (id INT UNSIGNED AUTO_INCREMENT NOT NULL, pid INT UNSIGNED DEFAULT 0 NOT NULL, tstamp INT UNSIGNED DEFAULT 0 NOT NULL, email VARCHAR(255) DEFAULT '' NOT NULL, active CHAR(1) DEFAULT '' NOT NULL, addedOn VARCHAR(10) DEFAULT '' NOT NULL, confirmed VARCHAR(10) DEFAULT '' NOT NULL, ip VARCHAR(64) DEFAULT '' NOT NULL, token VARCHAR(32) DEFAULT '' NOT NULL, UNIQUE INDEX pid_email (pid, email), INDEX email (email(191)), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB ROW_FORMAT = DYNAMIC': SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes" at /var/www/vhosts/domain.tld/httpdocs/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php line 106 {"exception":"[object] (Doctrine\\DBAL\\Exception\\DriverException(code: 0): An exception occurred while executing 'CREATE TABLE tl_newsletter_recipients (id INT UNSIGNED AUTO_INCREMENT NOT NULL, pid INT UNSIGNED DEFAULT 0 NOT NULL, tstamp INT UNSIGNED DEFAULT 0 NOT NULL, email VARCHAR(255) DEFAULT '' NOT NULL, active CHAR(1) DEFAULT '' NOT NULL, addedOn VARCHAR(10) DEFAULT '' NOT NULL, confirmed VARCHAR(10) DEFAULT '' NOT NULL, ip VARCHAR(64) DEFAULT '' NOT NULL, token VARCHAR(32) DEFAULT '' NOT NULL, UNIQUE INDEX pid_email (pid, email), INDEX email (email(191)), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB ROW_FORMAT = DYNAMIC':\n\nSQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes at /var/www/vhosts/domain.tld/httpdocs/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php:106, Doctrine\\DBAL\\Driver\\PDOException(code: 42000): SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes at /var/www/vhosts/domain.tld/httpdocs/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:90, PDOException(code: 42000): SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes at /var/www/vhosts/domain.tld/httpdocs/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:88)"} []
In allen Fällen sind mir im Contao-Manager folgende Anweisungen aufgefallen:
Spalten ändern
Spalten anlegenCode:DROP INDEX path ON tl_files DROP INDEX email ON tl_member DROP INDEX fromtable ON tl_version
Wenn ich die oberen Anweisungen im PHP-MyAdmin manuell ausführe, werden sie vom Contao-Install-Tool rückgängig gemacht und es erscheinen wieder alle 6 SQL-Anweisungen. Bei den unteren drei Anweisungen erscheint die SQL-Fehlermeldung Syntax error or access violation: Specified key was too long; max key length is 767Code:CREATE INDEX path ON tl_files (path(191)) CREATE INDEX email ON tl_member (email(191)) CREATE INDEX fromtable ON tl_version (fromtable(191))
Zwei der getesteten Systeme sind eigene Server auf CentOS 7-Basis, auf denen alles bisher einwandfrei funktioniert hat (wobei "bisher" relativ ist, da gefühlt bei JEDEM Update im letzten Jahr immer irgendwas nicht funktionierte und viel Zeit für die Fehlersuche und -Bereinigung draufging, aber zumindest haben vor Weihnachten Installationen und Updates fehlerfrei funktioniert). Der Dritte Server ist ein Ubuntu-Server.
Ich bin inzwischen echt angenervt von den immer wieder auftretenden Problemen. Warum passiert das immer wieder?
Hat jemand eine Idee, wo genau das Problem in diesem Fall liegt?
Vielen Dank und viele Grüße,
Timo
Lesezeichen