Upd 15.0.8: MySQL wird als Datenbank verwendet, unterstĂŒtzt jedoch keine 4-Byte-Zeichen

Hallo,
nach dem Update auf v15.0.8 kommt folgende Warnung:
“MySQL wird als Datenbank verwendet, unterstĂŒtzt jedoch keine 4-Byte-Zeichen. Um beispielsweise 4-Byte-Zeichen (wie Emojis) ohne Probleme mit Dateinamen oder Kommentaren verarbeiten zu können, wird empfohlen, die 4-Byte-UnterstĂŒtzung in MySQL zu aktivieren. FĂŒr weitere Details lesen bitte die Dokumentationsseite hierzu.”

Der MySQL-Server lÀuft im hosted webpack bei HostEurope mit utf8mb4_unicode_ci .

Warum kommt diese Fehlermeldung trotzdem? Eine 4-Byte-UnterstĂŒtzung sollt damit doch gewĂ€hrleistet sein!?

Kann man nur den Zeichensatz/ die Kollation der MySQL-Verbindung auf
utf8mb4_gereral_ci
wie hier empfohlen umstellen?
Aufgrund des shared Webhosting habe ich nur Zugriff auf phpMyAdmin


Danke und Gruß!

Hallo @nextclouder,

ich kann Dir hier nur meine Erfahrungen mitteilen.

Also grundsÀtzlich ja, aaaber:
PrĂŒfe vorher welche MySQL-Version bei Dir vorliegt.

Da meine Datenbank schon etwas Àlter war, wurde sie damals mit der MySQL-Version 5.5.x angelegt. Damit gab es nur Fehler, da diese Version nicht mit der Konvertierung der Felder klar kam.

Ich habe nun eine neue Datenbank angelegt, welche nun als MySQL-Version 5.7.x lÀuft.
Festgestellt habe ich bei anderen Installationen, dass ab der MySQL-Version 5.6.x alles in Ordnung ist.
Die alten Daten habe ich im phpMyAdmin exportiert und in die neue Datenbank importiert.
Nun noch in der config.php die neuen Datenbankdaten eingetragen und schon lief alles weiter.

Wenn diese Voraussetzungen bei Dir erst einmal vorliegen, dann solltest Du erst in der config.php den Eintrag “‘mysql.utf8mb4’ => true,” eintragen und wenn Du dann noch den Eintrag “‘version’ => ‘15.0.8.1’,” in “‘version’ => ‘15.0.7.1’,” Ă€nderst, dann wird die Nextcloud neu installiert und die Tabellen werden automatisch konvertiert. Hierbei etwas Geduld, denn es kann bei einem grĂ¶ĂŸeren Datenbestand etwas dauern.

Gruß
Crashandy

2 Likes

Hallo,

danke fĂŒr den Tipp.
Auf dem HostEurope-Webpack lÀuft ein MySQL-Server mit Datenbank 5.6.43-84.3-log.

Diese Nextcloud-Datenbank lÀuft mit utf8mb4_unicode_ci .

Damit sollte doch eine Unicode-UnterstĂŒtzung inkl. 4-Byte schon aktiv sein, oder?
Warum mÀkelt Nextcloud-15.0.8. trotzdem?

 -- phpMyAdmin SQL Dump
 -- version 4.9.0.1deb1
 -- https://www.phpmyadmin.net/
 --
 -- Host: webpack.hosteurope.de
 -- Erstellungszeit: 18. Jun 2019 um 11:10
 -- Server-Version: 5.6.43-84.3-log
 -- PHP-Version: 7.2.18-1+0~20190503103213.21+stretch~1.gbp101320
 
 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
 SET AUTOCOMMIT = 0;
 START TRANSACTION;
 SET time_zone = "+00:00";
 
 
 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
 /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
 /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
 /*!40101 SET NAMES utf8mb4 */;
 
 --
 -- Datenbank: `db`
 --
 CREATE DATABASE IF NOT EXISTS `db` DEFAULT CHARACTER SET latin1 COLLATE latin1_german2_ci;
 USE `db`;
 
 -- --------------------------------------------------------
 
 --
 -- Tabellenstruktur fĂŒr Tabelle `oc_accounts`
 --
 
 CREATE TABLE `oc_accounts` (
   `uid` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '',
   `data` longtext COLLATE utf8_bin NOT NULL
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

 --
 -- Daten fĂŒr Tabelle `oc_accounts`
 --

Kann ich einfach auf utf8mb4_general_ci umstellen und dann in der config.php den Eintrag “‘mysql.utf8mb4’ => true,” eintragen?

Und mit welchen 4-Byte-EinschrÀnkungen muss ich leben, falls ich nichts Àndere?

Anwort des HE-Supports, klingt kompliziert


Wir haben Ihr Anliegen geprĂŒft und können Ihnen mitteilen, dass wir prinzipiell Support fĂŒr UTF-8 mit 4-Byte Support haben.
Allerdings gibt es da ein paar Dinge zu beachten, weil per Default UTF-8 mit 3-Byte genutzt wird.

1.) Das Character-Set fĂŒr jede MySQL-Verbindung muss zu Anfang umgestellt werden:

SET NAMES utf8mb4

oder ggf. noch mit richtiger Kollation

SET NAMES utf8mb4 COLLATE utf8mb4_german2_ci

2.) In der Datenbank muss das Character-Set ebenfalls umgestellt werden, optional wieder mit zusÀtzlichem COLLATE Parameter hinten drin, wie zuvor beim SET NAMES Befehl, :

ALTER DATABASE database_name CHARACTER SET = utf8mb4

3.) Zu guter Letzt ist dann noch das Character-Set der entsprechenden Tabelle umzustellen, wobei es hier noch eine Besonderheit fĂŒr die Felder dieser Tabelle gibt.

ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4

Hallo @nextclouder,

Mit dieser Version habe ich es bei STRATO am laufen. Es sollte also auch bei Dir funktionieren.
Diese Besonderheit mit “VARCHAR(191)” gab es noch in der MySQL-Version 5.5.x, ab 5.6.x funktioniert es nun auch mit “VARCHAR(255)”.
Ich wĂŒrde an Deiner Stelle einmal ausprobieren was passiert, wenn Du die Zeile “‘mysql.utf8mb4’ => true,” in Deiner config.php eintrĂ€gst. Aber unbedingt auch die Versionsnummer herabsetzen, da die Reparatur bzw. die Konvertierung sonst nicht anlĂ€uft.
Bei Misserfolg einfach die eingefĂŒgte Zeile wieder löschen und es wird wieder auf utf8 konvertiert.

Meines Wissens, kannst Du dann z.B. keine Smilies verwenden.

Gruß
Crashandy

Wie/ wo sehe ich ‘funktionierende Smilies’?
(Bislang haben wir die wohl nicht verwendet, mir geht es eher um ein fehlerfreies Log auch im Hinblick auf die zukĂŒnftige Weiterentwicklung von NC
)

War mal mutig und habe in der config.php der 15.0.8 geÀndert:
‘mysql.utf8mb4’ => true,
‘version’ => ‘15.0.7.1’,

Beim Aufruf sollte dann auch auf 15.0.8 upgedated werden, aber es hagelte Fehler


 Aktualisierung auf 15.0.8
 
 Doctrine\DBAL\Exception\DriverException: An exception occurred while executing 'ALTER TABLE `oc_addressbooks` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;': 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: Change row format for oc_accounts ...
 
 Reparaturinformation: Change collation for oc_accounts ...
 
 Reparaturinformation: Change row format for oc_activity ...
 
 Reparaturinformation: Change collation for oc_activity ...
 
 Reparaturinformation: Change row format for oc_activity_mq ...
 
 Reparaturinformation: Change collation for oc_activity_mq ...
 
 Reparaturinformation: Change row format for oc_addressbookchanges ...
 
 Reparaturinformation: Change collation for oc_addressbookchanges ...
 
 Reparaturinformation: Change row format for oc_addressbooks ...
 
 Reparaturinformation: Change collation for oc_addressbooks ...
 
 Reparaturinformation: Change row format for oc_appconfig ...
 
 Reparaturinformation: Change collation for oc_appconfig ...
 
 Reparaturinformation: Change row format for oc_authtoken ...
 
 Reparaturinformation: Change collation for oc_authtoken ...
 
 Reparaturinformation: Change row format for oc_bruteforce_attempts ...
 
 Reparaturinformation: Change collation for oc_bruteforce_attempts ...
 
 Reparaturinformation: Change row format for oc_calendar_invitations ...
 
 Reparaturinformation: Change collation for oc_calendar_invitations ...
 
 Reparaturinformation: Change row format for oc_calendar_resources ...
 
 Reparaturinformation: Change collation for oc_calendar_resources ...
 
 Reparaturinformation: Change row format for oc_calendar_rooms ...
 
 Reparaturinformation: Change collation for oc_calendar_rooms ...
 
 Reparaturinformation: Change row format for oc_calendarchanges ...
 
 Reparaturinformation: Change collation for oc_calendarchanges ...
 
 Reparaturinformation: Change row format for oc_calendarobjects ...
 
 Reparaturinformation: Change collation for oc_calendarobjects ...
 
 Reparaturinformation: Change row format for oc_calendarobjects_props ...
 
 Reparaturinformation: Change collation for oc_calendarobjects_props ...
 
 Reparaturinformation: Change row format for oc_calendars ...
 
 Reparaturinformation: Change collation for oc_calendars ...
 
 Reparaturinformation: Change row format for oc_calendarsubscriptions ...
 
 Reparaturinformation: Change collation for oc_calendarsubscriptions ...
 
 Reparaturinformation: Change row format for oc_cards ...
 
 Reparaturinformation: Change collation for oc_cards ...
 
 Reparaturinformation: Change row format for oc_cards_properties ...
 
 Reparaturinformation: Change collation for oc_cards_properties ...
 
 Reparaturinformation: Change row format for oc_comments ...
 
 Reparaturinformation: Change collation for oc_comments ...
 
 Reparaturinformation: Change row format for oc_comments_read_markers ...
 
 Reparaturinformation: Change collation for oc_comments_read_markers ...
 
 Reparaturinformation: Change row format for oc_credentials ...
 
 Reparaturinformation: Change collation for oc_credentials ...
 
 Reparaturinformation: Change row format for oc_dav_shares ...
 
 Reparaturinformation: Change collation for oc_dav_shares ...
 
 Reparaturinformation: Change row format for oc_directlink ...
 
 Reparaturinformation: Change collation for oc_directlink ...
 
 Reparaturinformation: Change row format for oc_file_locks ...
 
 Reparaturinformation: Change collation for oc_file_locks ...
 
 Reparaturinformation: Change row format for oc_filecache ...
 
 Reparaturinformation: Change collation for oc_filecache ...
 
 Reparaturinformation: Change row format for oc_files_trash ...
 
 Reparaturinformation: Change collation for oc_files_trash ...
 
 Reparaturinformation: Change row format for oc_flow_checks ...
 
 Reparaturinformation: Change collation for oc_flow_checks ...
 
 Reparaturinformation: Change row format for oc_flow_operations ...
 
 Reparaturinformation: Change collation for oc_flow_operations ...
 
 Reparaturinformation: Change row format for oc_group_admin ...
 
 Reparaturinformation: Change collation for oc_group_admin ...
 
 Reparaturinformation: Change row format for oc_group_user ...
 
 Reparaturinformation: Change collation for oc_group_user ...
 
 Reparaturinformation: Change row format for oc_groups ...
 
 Reparaturinformation: Change collation for oc_groups ...
 
 Reparaturinformation: Change row format for oc_jobs ...
 
 Reparaturinformation: Change collation for oc_jobs ...
 
 Reparaturinformation: Change row format for oc_migrations ...
 
 Reparaturinformation: Change collation for oc_migrations ...
 
 Reparaturinformation: Change row format for oc_mimetypes ...
 
 Reparaturinformation: Change collation for oc_mimetypes ...
 
 Reparaturinformation: Change row format for oc_mounts ...
 
 Reparaturinformation: Change collation for oc_mounts ...
 
 Reparaturinformation: Change row format for oc_notifications ...
 
 Reparaturinformation: Change collation for oc_notifications ...
 
 Reparaturinformation: Change row format for oc_notifications_pushtokens ...
 
 Reparaturinformation: Change collation for oc_notifications_pushtokens ...
 
 Reparaturinformation: Change row format for oc_oauth2_access_tokens ...
 
 Reparaturinformation: Change collation for oc_oauth2_access_tokens ...
 
 Reparaturinformation: Change row format for oc_oauth2_clients ...
 
 Reparaturinformation: Change collation for oc_oauth2_clients ...
 
 Reparaturinformation: Change row format for oc_preferences ...
 
 Reparaturinformation: Change collation for oc_preferences ...
 
 Reparaturinformation: Change row format for oc_privatedata ...
 
 Reparaturinformation: Change collation for oc_privatedata ...
 
 Reparaturinformation: Change row format for oc_properties ...
 
 Reparaturinformation: Change collation for oc_properties ...
 
 Reparaturinformation: Change row format for oc_schedulingobjects ...
 
 Reparaturinformation: Change collation for oc_schedulingobjects ...
 
 Reparaturinformation: Change row format for oc_share ...
 
 Reparaturinformation: Change collation for oc_share ...
 
 Reparaturinformation: Change row format for oc_share_external ...
 
 Reparaturinformation: Change collation for oc_share_external ...
 
 Reparaturinformation: Change row format for oc_storages ...
 
 Reparaturinformation: Change collation for oc_storages ...
 
 Reparaturinformation: Change row format for oc_systemtag ...
 
 Reparaturinformation: Change collation for oc_systemtag ...
 
 Reparaturinformation: Change row format for oc_systemtag_group ...
 
 Reparaturinformation: Change collation for oc_systemtag_group ...
 
 Reparaturinformation: Change row format for oc_systemtag_object_mapping ...
 
 Reparaturinformation: Change collation for oc_systemtag_object_mapping ...
 
 Reparaturinformation: Change row format for oc_trusted_servers ...
 
 Reparaturinformation: Change collation for oc_trusted_servers ...
 
 Reparaturinformation: Change row format for oc_twofactor_backupcodes ...
 
 Reparaturinformation: Change collation for oc_twofactor_backupcodes ...
 
 Reparaturinformation: Change row format for oc_twofactor_providers ...
 
 Reparaturinformation: Change collation for oc_twofactor_providers ...
 
 Reparaturinformation: Change row format for oc_users ...
 
 Reparaturinformation: Change collation for oc_users ...
 
 Reparaturinformation: Change row format for oc_vcategory ...
 
 Reparaturinformation: Change collation for oc_vcategory ...
 
 Reparaturinformation: Change row format for oc_vcategory_to_object ...
 
 Reparaturinformation: Change collation for oc_vcategory_to_object ...
 
 Reparaturinformation: Change row format for oc_whats_new ...
 
 Reparaturinformation: Change collation for oc_whats_new ...
 
 Reparaturinformation: Change row format for oc_federated_reshares ...
 
 Reparaturinformation: Change collation for oc_federated_reshares ...
 
 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
 
 Suche nach einer Aktualisierung fĂŒr die App "accessibility" im App-Store
 
 App-Store auf Aktualisierung fĂŒr die App "accessibility" geprĂŒft
 
 Suche nach ...
 Reparaturschritt: Repair MySQL collation
 
 Reparaturinformation: Change row format for oc_addressbooks ...
 
 Reparaturinformation: Change collation for oc_addressbooks ...
 
 Doctrine\DBAL\Exception\DriverException: An exception occurred while executing 'ALTER TABLE `oc_addressbooks` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;': 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.

Danke + Gruß, UC

Hallo @nextclouder,

da scheint es wohl doch nicht bei Dir zu funktionieren.
Hast Du es auch schon im phpMyAdmin versucht?
Dort musst Du aber unbedingt vorher Deine Datenbank exportieren, da es auch einmal ganz schief gehen kann.

Ich habe auch schon bei Ă€lteren MySQL-Versionen Tabelle fĂŒr Tabelle konvertiert und bei Bedarf den Varchar-Wert auf 191 gesetzt.
Die erste Tabelle an welcher man es erkennt, dass die Konvertierung fehl schlĂ€gt, ist die “oc-adressbooks”.

Sonst musst Du einfach diese Fehlermeldung ignorieren, so wie auch das fehlende PHP-Modul “imagick”.

Gruß
Crashandy

Hmmm, Export und Import in phpMyAdmin schaffe ich noch, aber fĂŒr das hĂ€ndische Konvertieren brĂ€uchte ich eine Schritt-fĂŒr-Schritt-Anleitung anhand einer oc_Tabelle, vielleicht unter BerĂŒcksichtigung der vorher notwendigen Änderungen, die HostEurope oben angegeben hat

Nur, falls Du Lust und Zeit hast, wÀre prima :blush: 


DANKE, UC

Hallo @nextclouder,

ich habe die MySQL-Server-Version: 5.6.42-log und da funktioniert es ohne die FeldlÀnge auf VARCHAR(191) zu Àndern.

Gib mal im phpMyAdmin die folgenden SQL-Befehle ein und versuche die Konvertierung neu.

SET NAMES utf8mb4 COLLATE utf8mb4_general_ci;
ALTER DATABASE my_database DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

my_database = Deine Datenbank eintragen

Bei mir sieht die Tabelle dann so aus:

--
-- Table structure for table `oc_accounts`
--

DROP TABLE IF EXISTS `oc_accounts`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `oc_accounts` (
  `uid` varchar(64) COLLATE utf8mb4_bin NOT NULL DEFAULT '',
  `data` longtext COLLATE utf8mb4_bin NOT NULL,
  PRIMARY KEY (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=COMPRESSED;
/*!40101 SET character_set_client = @saved_cs_client */;

Gruß
Crashandy

Hallo,
danach gleicher Fehler wie bei letzten Versuch:

Doctrine\DBAL\Exception\DriverException: An exception occurred while executing 'ALTER TABLEoc_addressbooksCONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;': SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

Versuche ich dann die Tabelle ‘oc_addressbooks’ mit:

ALTER TABLE oc_addressbooks CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4

zu bearbeiten, kommt als Fehler:

MySQL meldet: Dokumentation
#1054 - Unbekanntes Tabellenfeld 'column_name' in oc_addressbooks

Hmmm


LG UC

Hallo @nextclouder,

dann nimm mal die folgenden Befehle:

ALTER TABLE oc_addressbooks CHANGE principaluri principaluri VARCHAR(191);
ALTER TABLE oc_addressbooks CHANGE uri uri VARCHAR(191);

danach noch einmal

ALTER TABLE oc_addressbooks CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

weiter mit

ALTER TABLE oc_appconfig CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

Analog so weiter, Tabelle fĂŒr Tabelle, bis der nĂ€chste Fehler kommt.
Ist sehr aufwendig.

Gruß
Crashandy

Hallo,
habe weiter mit den gezeigten Befehle gebastelt, das folgende lief durch:
SET NAMES utf8mb4 COLLATE utf8mb4_general_ci;

 ALTER DATABASE `db1085127-ncw2` CHARACTER SET = utf8mb4 COLLATE utf8mb4_general_ci
 
 ALTER TABLE oc_addressbooks CHANGE principaluri principaluri VARCHAR(191);
 ALTER TABLE oc_addressbooks CHANGE uri uri VARCHAR(191);
 ALTER TABLE oc_addressbooks CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
 
 ALTER TABLE oc_appconfig CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
 
 ALTER TABLE oc_accounts CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
 ALTER TABLE oc_activity CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
 ALTER TABLE oc_activity_mq CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
 ALTER TABLE oc_addressbookchanges CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
 ALTER TABLE oc_appconfig CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

Dann kamen HĂ€nger, z.B.:
Fehler

 SQL-Befehl:
 
 ALTER TABLE oc_authtoken CHANGE principaluri principaluri VARCHAR(191)
 
 MySQL meldet: Dokumentation
 #1054 - Unbekanntes Tabellenfeld 'principaluri' in oc_authtoken

oder
MySQL lieferte ein leeres Resultat zurĂŒck (d.h. null DatensĂ€tze). (Die Abfrage dauerte 0.0152 Sekunden.)

  • ALTER TABLE oc_bruteforce_attempts CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin*
    
  • [Inline bearbeiten] [ Bearbeiten ] [ PHP-Code erzeugen ]*
    
  • Warning: #1071 SchlĂŒssel ist zu lang. Die maximale SchlĂŒssellĂ€nge betrĂ€gt 767*
    
  • Warning: #1071 SchlĂŒssel ist zu lang. Die maximale SchlĂŒssellĂ€nge betrĂ€gt 767*
    

Warum und wie geht es hier weiter?

Danke + Gruß, UC

Hallo @nextclouder,

ich dachte Du hast das Prinzip verstanden.

Warum? Weil in der Tabelle "oc_authtoken " die Spalte “token” zu lang ist, nĂ€mlich 255 an statt 191.
Nun darfst Du aber nicht in allen Spalten die LÀngen Àndern, da manche auch mit 255 und mehr funktionieren. Das sagt Dir dann die Fehlermeldung nach dem Konvertierungsversuch.

Der nÀchste Befehl wÀre dann

ALTER TABLE oc_authtoken CHANGE token token VARCHAR(191);

dann nochmals versuchen

ALTER TABLE oc_authtoken CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

bei Erfolg weiter mit den nÀchsten Tabellen

ALTER TABLE oc_bruteforce_attempts CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
ALTER TABLE oc_calendarchanges CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
ALTER TABLE oc_calendarobjects CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
ALTER TABLE oc_calendarobjects CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

Hier wieder Fehlermeldung

**SQL-Befehl:**

ALTER TABLE oc_calendarobjects CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin

**MySQL meldet:** 

`#1071 - SchlĂŒssel ist zu lang. Die maximale SchlĂŒssellĂ€nge betrĂ€gt 767`

Dann musst Du in der Struktur der Tabelle nachschauen, welche Spalte es betreffen könnte. Es könnte die Spalt “uri” sein, da dort Indizes hinterlegt sind.
Also nun den folgenden Befehl

ALTER TABLE oc_calendarobjects CHANGE uri uri VARCHAR(191);

Danach wiederholen

ALTER TABLE oc_calendarobjects CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

und dieses Mal ist es erfolgreich.

Und nun weiter mit

ALTER TABLE oc_calendarobjects_props CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

usw.

Gruß
Crashandy

Hallo
und einmal mehr DANKE! Das Prinzip habe ich jetzt (hoffentlich) kapiert und mich bis oc_migrations durchgekÀmpft.
Dort kommt trotz der beschriebenen Umstellung mit
ALTER TABLE oc_migrations CHANGE app app VARCHAR(191);
ALTER TABLE oc_migrations CHANGE version version VARCHAR(191);
ALTER TABLE oc_migrations CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

folgender Fehler:

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
Doctrine\DBAL\Exception\DriverException: An exception occurred while executing ‘CREATE TABLE oc_migrations (app VARCHAR(255) NOT NULL, version VARCHAR(255) NOT NULL, PRIMARY KEY(app, version)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin ENGINE = InnoDB ROW_FORMAT = compressed’: SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

Die Tabelle wird daraufhin beim Aufruf von NC und dem Konvertierungslauf 15.0.7 >> 15.0.8 automatisch gelöscht (!).
Was mir auffÀllt: ownCloud
 Falls ich das richtig in Erinnerung habe, wurde die Installation seinerzeit von ownCloud auf NextCloud umgestellt.
Screen-2019-06-24_12-26-41

Nebenbefundlich zeigt jede Umwandlung in phpMyAdmin folgende Warnung:

MySQL lieferte ein leeres Resultat zurĂŒck (d.h. null DatensĂ€tze). (Die Abfrage dauerte 0.0261 Sekunden.)
ALTER TABLE oc_calendarobjects CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
Warning: #1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_format > Antelope.
Warning: #1478 InnoDB: assuming ROW_FORMAT=COMPACT.

Wie geht’s weiter?

Danke + Gruß, UC

Hallo @nextclouder,

eventuell hilft Dir dieser Beitrag hier bei Deinem Problem weiter:
https://help.nextcloud.com/t/update-von-15-0-7-auf-16-0-0-funktioniert-nicht-1071-specified-key-was-too-long-max-key-length-is-767-bytes/53340

Es wundert mich jedenfalls sehr, dass die Konvertierung bei Deiner MySQL-Version so viele Probleme macht. Ich kenn mich auch bei “HostEurope” nicht aus, was dort alles noch einzustellen geht.

Gruß
Crashandy

Guten Morgen,
das notwendige Barracuda-Format der DB fĂŒr NC > 15.0.7 ist des RĂ€tsels Lösung. Dazu der Auszug aus einer ‘Abbitte-Mail’ des HostEurope-Supports:

Bei der ÜberprĂŒfung des Vorgangs hat Herr 
 festgestellt, dass unseren Kollegen bei der Bearbeitung Ihrer Anfrage bedauerlicherweise ein Fehler unterlaufen ist.

Es ist so: Aktuell wird das Barracuda-Format von unseren Datenbanken grundsĂ€tzlich nicht unterstĂŒtzt. Und genau dieser Umstand ist bei der Bearbeitung Ihres Anliegens leider vollkommen ĂŒbersehen worden.

Ich habe daraufhin RĂŒcksprache mit unserer technischen Fachabteilung gehalten und habe erfahren, dass die Implementierung von Barracuda auf unseren Systemen in Planung ist und mit der EinfĂŒhrung von MYSQL 8 standardmĂ€ĂŸig bei Ihrem Produkt verfĂŒgbar sein wird. Leider habe ich keine Auskunft zum voraussichtlichen Zeithorizont der geplanten Anpassung erhalten und kann Ihnen daher nicht sagen, wann Sie mit der eben erwĂ€hnten EinfĂŒhrung rechnen können.

Das bedeutet dann wohl, dass ich von weiteren NC-Updates ausgeschlossen bin. Trotzdem DANKE fĂŒr die umfangreiche Hilfe, so konnten wir wenigstens den Grund fĂŒr den Misserfolg finden.

Schönen Tag, Nextclouder

Hallo @nextclouder,

das ist ja mal eine gute (schlechte) Nachricht.

Bei mir laufen Nextcloud-Installationen sehr gut bei “1und1 IONOS” und bei “ALL-INKL.COM”, bei “STRATO” ist es eher befriedigend. Mein persönlicher Favorit ist aber die Nextcloud auf meiner Synology DS716+II mit 8 GB RAM.

Mal schauen was der Raspberry PI 4 mit 4 GB RAM so verspricht, da werde ich wohl doch noch schwach werden.

Viel Erfolg mit der baldigen Lösung fĂŒr Dich.

Beste GrĂŒĂŸe, Crashandy

Hier steht, wie man aufs Barracuda-Format umstellt:

https://www.allerstorfer.at/enabling-mysql-4-byte-support-for-nextcloud-on-ubuntu-18-04/

Danke, funktioniert aber nur, falls der Provider dies auch unterstĂŒtzt, s.o.
Gruß NC

Sag dem Provider, daß Barracuda und Antelope gleichzeitig funktieren. Also die Datenbanken, die nicht auf Barracuda umgestellt wurden trotzdem funktionieren.

Hmmmm, es geht wohl darum, dass seitens des Providers HostEurope die supportmĂ€ĂŸig unterstĂŒtzte Umstellung in Zukunft mit MySQL-8.x zu erwarten ist. Und wenn der Provider die INI-EintrĂ€ge nicht setzt, kann man ihn bei SharedHosting nur schwer zwingen