Error 4.6.2 -> 4.7 1071 Specified key was too long; max key length is 767 bytes

PHP 7.4.24
10.1.48-MariaDB-0+deb9u2 - Debian 9.13

Hallo Zusammen,
ich wollte das Update 4.6.2 → 4.7 durchführen und erhalte folgenden Fehler:

web/core/Updates/4.7.0-b2.php: Error trying to execute the migration 'ALTER TABLE `matomo_changes` ADD UNIQUE KEY unique_plugin_version_title (`plugin_name`, `version`, `title`);'. The error was: SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

Hat jemend eine Lösung dafür? Ich verstehe den Fehler grundsätzlich, leider hat meine Änderung nicht geholfen.

DANKE
Ciao thomas

Ich habe das gleiche Problem – und andere offensichtlich auch: Critical error while upgrading to 4.7.0

Hallo !

Ich habe eine Lösung gefunden, indem ich die Grenzlänge des Schlüssels durch Ausführen eines einfachen SQL-Befehls geändert habe.

Sie müssen sich mit CLI mit Ihrem MYSQL verbinden

MYSQL -u <user> -p

Wählen Sie dann Ihre Datenbank aus und führen Sie diesen Befehl aus:

USE matomo

Führen Sie dann diese Befehlszeile aus, um die Beschränkung zu erhöhen

SET @@global.innodb_large_prefix = 1;

Und zurück zu Ihrer Matomo-Installation und führen Sie das DB-Update aus!
Es hat das Problem gelöst :slight_smile:

Ronan HELLO

Bei Root-Servern ist das möglich ,bei shared Hosts nicht so ohne Weiteres ausführbar. Dafür sind SUPER privileges notwendig.

Vielleicht können Sie versuchen, Ihre Datenbank herunterzuladen, sie mit dieser Befehlszeile auf Ihrem eigenen Computer zu aktualisieren und diese Datenbank dann erneut hochzuladen? Es wird die Beschränkung von Ihrem Webhost passieren.

(Eigentlich nicht die beste, aber immerhin eine Lösung)

Ich bin mit der Kommandoziele nicht so firm. Kann ich diesen Befehl so auch in phpMyAdmin ausführen?

Ja, wenn der Benutzer in phpMyAdmin auf dem System Superuser-Rechte besitzt

Ja, wenn Ihr Benutzer keine Rechte hat, sehen Sie einen Fehler in PHPMyAdmin, aber Sie können es trotzdem versuchen.

Wie lautet dann der genaue SQL-Befehl in phpMyAdmin?

im Query-Fenster das SET… eingeben und absenden. Wenn es keinen Fehler gibt, hat es geklappt, ansonsten kommt etwas wie “Superprivileges needed”

2 Likes

Hallo,

Das klingt nach demselben Bug wie

Ich werde mich hier melden, wenn mehr dazu bekannt ist.