Hallo liebe Community,
ich hab jetzt viel gelesen zu ähnlichen Problemen, leider hat mir nichts so richtig weiter geholfen:
Ich habe eine Installation von 3.5 auf 4.9 gebracht (natürlich auf einer Paralelinstallation). Das hat soweit auch gut gelappt bis zur letzten Datenbank Aktualsierung, ein SQL Befehl (CREATE irgendwas mit unique tl_search.url) ging nicht.
Offensichtlich hab ich das innodb_large_prefix = off Problem. Da das ein Kundenhosting ist, komme ich da selbst nur beschränkt ran.
Ich hab dann eine config.yml angelegt mit dem empfohlenen:
Code:
doctrine:
dbal:
connections:
default:
default_table_options:
charset: utf8
collate: utf8_unicode_ci
Natürlich Caches danach erneuert. Das Problem blieb.
Contao lief dabei allerdings. Dann wollte ich einfach mal auf 4.13 gehen - da kamen dann weitere Fehler hinzu beim Aktualisieren und ich bin lieber wieder zur 4.9 zurück. Der Stand derzeit ist das folgende Einträge im Installtool gemacht werden müssen, aber Fehler liefern, auch wenn ich sie versuche einzeln anzuhaken.
Code:
Tabellen anlegen
Alle auswählen
CREATE TABLE tl_search (
id INT UNSIGNED AUTO_INCREMENT NOT NULL,
pid INT UNSIGNED DEFAULT 0 NOT NULL,
tstamp INT UNSIGNED DEFAULT 0 NOT NULL,
title TEXT DEFAULT NULL,
url VARCHAR(2048) CHARACTER SET ascii DEFAULT '' NOT NULL COLLATE `ascii_bin`,
text MEDIUMTEXT DEFAULT NULL,
filesize DOUBLE PRECISION DEFAULT '0' NOT NULL,
checksum VARCHAR(32) DEFAULT '' NOT NULL,
protected CHAR(1) DEFAULT '' NOT NULL,
groups
BLOB DEFAULT NULL,
language VARCHAR(5) DEFAULT '' NOT NULL,
UNIQUE INDEX url (url),
UNIQUE INDEX checksum_pid (checksum, pid),
PRIMARY KEY(id)
) DEFAULT CHARACTER SET utf8 COLLATE `utf8_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC
Spalten anlegen
Alle auswählen
ALTER TABLE tl_search_index ADD PRIMARY KEY (id)
ALTER TABLE tl_search_index ADD language VARCHAR(5) DEFAULT '' NOT NULL
ALTER TABLE tl_search_index ADD word VARCHAR(64) DEFAULT '' NOT NULL COLLATE `utf8_bin`
ALTER TABLE tl_search_index ADD id INT UNSIGNED AUTO_INCREMENT NOT NULL
CREATE INDEX word ON tl_search_index (word)
Beim Updateversuch entsteht folgender Fehler in der Logdatei:
Code:
[2022-08-11 08:29:15] request.INFO: Matched route "contao_install". {"route":"contao_install","route_parameters":{"_route":"contao_install","_scope":"backend","_token_check":true,"_controller":"Contao\\InstallationBundle\\Controller\\InstallationController::installAction"},"request_uri":"http://c4.graphischewerkstatt.de/contao/install","method":"POST"} []
[2022-08-11 08:29:15] request.CRITICAL: Uncaught PHP Exception Doctrine\DBAL\Exception\DriverException: "An exception occurred while executing 'CREATE TABLE tl_search (id INT UNSIGNED AUTO_INCREMENT NOT NULL, pid INT UNSIGNED DEFAULT 0 NOT NULL, tstamp INT UNSIGNED DEFAULT 0 NOT NULL, title TEXT DEFAULT NULL, url VARCHAR(2048) CHARACTER SET ascii DEFAULT '' NOT NULL COLLATE `ascii_bin`, text MEDIUMTEXT DEFAULT NULL, filesize DOUBLE PRECISION DEFAULT '0' NOT NULL, checksum VARCHAR(32) DEFAULT '' NOT NULL, protected CHAR(1) DEFAULT '' NOT NULL, groups BLOB DEFAULT NULL, language VARCHAR(5) DEFAULT '' NOT NULL, UNIQUE INDEX url (url), UNIQUE INDEX checksum_pid (checksum, pid), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE `utf8_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/graphischewerkstatt.de/graphischewerkstatt2022/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php line 128 {"exception":"[object] (Doctrine\\DBAL\\Exception\\DriverException(code: 0): An exception occurred while executing 'CREATE TABLE tl_search (id INT UNSIGNED AUTO_INCREMENT NOT NULL, pid INT UNSIGNED DEFAULT 0 NOT NULL, tstamp INT UNSIGNED DEFAULT 0 NOT NULL, title TEXT DEFAULT NULL, url VARCHAR(2048) CHARACTER SET ascii DEFAULT '' NOT NULL COLLATE `ascii_bin`, text MEDIUMTEXT DEFAULT NULL, filesize DOUBLE PRECISION DEFAULT '0' NOT NULL, checksum VARCHAR(32) DEFAULT '' NOT NULL, protected CHAR(1) DEFAULT '' NOT NULL, groups BLOB DEFAULT NULL, language VARCHAR(5) DEFAULT '' NOT NULL, UNIQUE INDEX url (url), UNIQUE INDEX checksum_pid (checksum, pid), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE `utf8_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/graphischewerkstatt.de/graphischewerkstatt2022/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php:128, Doctrine\\DBAL\\Driver\\PDO\\Exception(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/graphischewerkstatt.de/graphischewerkstatt2022/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDO/Exception.php:18, 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/graphischewerkstatt.de/graphischewerkstatt2022/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:141)"} []
[2022-08-11 08:29:15] request.CRITICAL: Uncaught PHP Exception Doctrine\DBAL\Exception\TableNotFoundException: "An exception occurred while executing 'SELECT id FROM tl_search WHERE url='http://c4.graphischewerkstatt.de/contao/install'': SQLSTATE[42S02]: Base table or view not found: 1146 Table 'gw_c4.tl_search' doesn't exist" at /var/www/vhosts/graphischewerkstatt.de/graphischewerkstatt2022/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php line 61 {"exception":"[object] (Doctrine\\DBAL\\Exception\\TableNotFoundException(code: 0): An exception occurred while executing 'SELECT id FROM tl_search WHERE url='http://c4.graphischewerkstatt.de/contao/install'':\n\nSQLSTATE[42S02]: Base table or view not found: 1146 Table 'gw_c4.tl_search' doesn't exist at /var/www/vhosts/graphischewerkstatt.de/graphischewerkstatt2022/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php:61, Doctrine\\DBAL\\Driver\\PDO\\Exception(code: 42S02): SQLSTATE[42S02]: Base table or view not found: 1146 Table 'gw_c4.tl_search' doesn't exist at /var/www/vhosts/graphischewerkstatt.de/graphischewerkstatt2022/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDO/Exception.php:18, PDOException(code: 42S02): SQLSTATE[42S02]: Base table or view not found: 1146 Table 'gw_c4.tl_search' doesn't exist at /var/www/vhosts/graphischewerkstatt.de/graphischewerkstatt2022/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:141)"} []
Contao 4.9.31 läuft ansich trotzdem ohne Fehler. PHP ist auf 8.0.22 und wenn ichs in Plesk richtig sehe ist es eine MariaDB - (die besagte tl_search fehlt) PHPmyAdmin Zugang hab ich.
Die config.yml enthält weiterhin den o.g. Eintrag. Ist die Lösung am Ende doch den Hoster zu fragen ob er am MYSQL folgendes einstellt?
Code:
innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_large_prefix = 1
Danke für jede Hilfe!