Polls-Problem Aktualisierung

Nextcloud

Aktualisierung auf 19.0.5

Doctrine\DBAL\Exception\DriverException: An exception occurred while executing ‘CREATE UNIQUE INDEX UNIQ_options ON oc_polls_options (poll_id, poll_option_text, timestamp)’: SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

Detaillierte Protokollmeldungen

Update vorbereiten

Log-Level auf “debug” gesetzt

Wartungsmodus eingeschaltet

Reparaturschritt: Repair MySQL collation

Reparaturinformation: All tables already have the correct collation → nothing to do

Reparaturschritt: Repair SQLite autoincrement

Reparaturschritt: Copy data from accounts table when migrating from ownCloud

Reparaturschritt: Drop account terms table when migrating from ownCloud

Das Datenbankschema wird aktualisiert

Datenbank aktualisiert

Reparaturschritt: Delete duplicates
Hallo zusammen,

ich habe jetzt folgende Fehlermeldung und komme nciht mehr weiter


Doctrine\DBAL\Exception\DriverException: An exception occurred while executing ‘CREATE UNIQUE INDEX UNIQ_options ON oc_polls_options (poll_id, poll_option_text, timestamp)’: SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

Das Update ist fehlgeschlagen. Bitte melde dieses Problem an die Nextcloud Community.

Was soll ich tun bzw. wie kann man den Fehler beheben. Bitte erklÀrt es so, dass jeder DAU das hinbekommt. Die Cloud ist bei Strato eingerichtet und daher habe ich keinen direkten Zugriff :frowning:

In der Tabelle oc_polls_options gibt es ungĂŒltige EintrĂ€ge, die zum Fehler fĂŒhren, wenn der Index angelegt werden soll. Der einzige Weg ist, die fehlerhaften EintrĂ€ge aus der Tabelle zu entfernen. Über Ionos sollte es aber möglich sein ĂŒber phpMyAdmin z.B. auf die Datenbank zugreifen zu können.

Die einfachste Methode ist, alle Tabellen beginnend mit oc_polls zu leeren. Aber die Tabellen bitte nicht löschen.

Mit der kommenden Version wird das Problem besser behandelt und dann sollte das nicht mehr auftreten.

1 Like

Ich sage nur: Perfekte Antwort. Es hat wunderbar funktioniert (auch mit Strato).

1 Like

Bei mir hat der Tipp leider nicht funktioniert. Ich hatte nur in einer Tabelle EintrĂ€ge. Auch nach dem Löschen der EintrĂ€ge trat der Fehler weiter auf. Ich habe dann den Index abgewandelt angelegt ‘CREATE UNIQUE INDEX UNIQ_options ON oc_polls_options (poll_id, timestamp)’
Bei den folgenden Indexen bin ich analog vorgegangen. Danach konnte ich auf Nextcloud wieder zugreifen und Polls deaktivieren.

Ich hab das gleiche Problem bei Domainfactory. Leider klappt weder das Leeren/Löschen noch das Anlegen der Indeces. Wenn ich ihn bei so anlege: " CREATE UNIQUE INDEX UNIQ_votes ON oc_polls_votes (poll_id, user_id)" kann ich nur eine TextOption erstellen. Alles andere scheint zu funktionieren. Schade. WĂ€re fĂŒr unsere Kita hilfreich gewesen.

Es ist generell keine gute Idee, die Indices abweichend von der Erwartung einer Appliaktion anzulegen, da die App darauf vertraut, dass die Indices auch korrekt vorhanden sind.

Die von Euch beiden angelegten Indices verhindern eine Funktion der Appliaktion, da der Index dann jeweils weitere EintrÀge verhindert.

Sofern sich der Fehler wie im Ausgangspost darstellt, iegt es an einem oder mehreren ungĂŒltigen TabelleneintrĂ€gen. Erkennbar an leeren Feldern oder daran, dass EintrĂ€ge doppelt im Sinne des originalen Index vorhanden sind.

FĂŒr oc_polls_option ist der korrekte Index
CREATE UNIQUE INDEX UNIQ_options ON oc_polls_options (poll_id, poll_option_text, timestamp)

FĂŒr oc_votes
CREATE UNIQUE INDEX UNIQ_votes ON oc_polls_votes (poll_id, user_id, vote_option_text)

Wird das Anlegen des index mit einem Fehler quittiert, liegt es an oben beschriebenen Sachverhalt.

Falls das nicht funktioniert ist eine Analyse anhand der konkreten Tabellen erforderlich.

Alternative: Tabellen neu aufbauen

Falls keine relevanten Daten in den polls tabellen vorhanden sind, empfehle ich alle oc_polls-Tabellen zu entfernen (ggfs. zweimal, da es eine Bedingung gibt, die das Löschen der oc_polls erst erlaubt, wenn alle anderen Tabellen keine abhÀngigen Objekte mehr enthalten).

Danach in der Tabelle oc_migrations alle EintrĂ€ge mit der app-id polls löschen und anschließend polls wieder aktivieren bzw. neu installieren.

Dann werden alle Tabellen korrekt aufgebaut.

1 Like

@dartcafĂ©: Danke fĂŒr deine zusĂ€tzlichen ErlĂ€uterungen.

Das ist mir schon klar gewesen, deswegen habe ich ja anschließend Polls auch deaktiviert.
Obwohl meine Tabellen leer waren konnte ich auch manuell per SQL den Index nicht korrekt anlegen es kam immer die Meldung “Specified key was too long; max key length is 767 bytes”.
Hat mich auch gewundert. Nur da ich die Nextcloud erst einmal schnell zum laufen bringen wollte habe ich mich fĂŒr die Quick und Dirty-Variante entschieden.
Ich werde bei Gelegenheit deinen Vorschlag mit dem Löschen der Tabellen probieren um dann Polls wieder aktivieren zu können.

Andere Ursache. Die Datenbankeinstellungen mĂŒssen geĂ€ndert werden:

innodb_file_format = Barracuda
innodb_large_prefix → on

Siehe: create index fails with key was too long (1.6.3 -> 1.7.4) · Issue #1375 · nextcloud/polls · GitHub