Teilen funktioniert nicht mehr (User werden nicht angezeigt)

Nextcloud 13.0.5

Hi,

ich habe hier ein merkwürdiges Problem. Ich kann plötzlich keine neuen Dateien und Ordner mehr teilen. Wenn ich auf das Teilen-Symbol klicke, kann ich normalerweise den Namen eines internen Users eingeben (bzw. nur den ersten Buchstaben) und mir wird der entsprechende User angezeigt, ich wähle ihn aus und lege fest ob er auch schreiben kann etc.

Nun ist mir heute aufgefallen, dass wenn ich in das Eingabefeld etwas schreibe, kein User mehr angezeigt wird, ich also auch keinen auswählen kann. Das i neben dem Eingabefeld zuckt kurz, weiter passiert nichts. In der Benutzerverwaltung sind die User alle vorhanden und sie können auch auf bestehende geteilten Dokumente zugreifen.

Ich habe bereits die App File sharing deaktiviert und neu aktiviert, bringt leider nichts.

Ich habe dieses Problem auf beiden meiner Nextcloud-Instanzen.

Woran kann das liegen?

Gruß
Michael

Einige User berichteten im Netz, dass ein Update die Problematik bei ihnen gelöst hatte. Da ich bereits auf 13.0.5 war, konnte ich kein Update machen.

Nach einer kompletten Neuinstallation mit Backup und Restore der Nextcloud DB (die Daten liegen auf einem externen S3 Storage) war die Funktion Teilen wieder funktionsfähig.

Was letztlich die Ursache für das Problem war, weiß ich aber immer noch nicht.

Gruß
Michael

Muss mich dazu noch einmal melden:

In einer meiner Installationen hat die Neuinstalation geholfen, in einer anderen nicht.

Wenn man beim teilen beginnt, den Namen eines Users einzugeben, sollte die Autovervollständigung anspringen und die entsprechenden User vorschlagen. Das passiert in dieser Installation (13.0.5) leider nicht mehr.

Im Log sehe ich gleichzeitig folgendes:

{"reqId":"W3hZXX6-bPDESYKeXFiSagAAABY","level":3,"time":"2018-08-18T17:37:33+00:00","remoteAddr":"::ffff:95.222.239.38","user":"michael.bzdega","app":"no app in context","method":"GET","url":"\/ocs\/v1.php\/apps\/files_sharing\/api\/v1\/sharees?format=json&search=wol&perPage=200&itemType=folder","message":"Exception: {\"Exception\":\"Doctrine\\\\DBAL\\\\Exception\\\\DriverException\",\"Message\":\"An exception occurred while executing 'SELECT `c`.`carddata`, `c`.`uri` FROM `oc_cards` `c` WHERE `c`.`id` IN (SELECT DISTINCT `cp`.`cardid` FROM `oc_cards_properties` `cp` WHERE (`cp`.`addressbookid` = ?) AND ((`cp`.`name` = ?) OR (`cp`.`name` = ?)) AND (`cp`.`value`  COLLATE utf8mb4_general_ci LIKE ?))' with params [\\\"1\\\", \\\"CLOUD\\\", \\\"FN\\\", \\\"%wol%\\\"]:\\n\\nSQLSTATE[42000]: Syntax error or access violation: 1253 COLLATION 'utf8mb4_general_ci' is not valid for CHARACTER SET 'utf8'\",\"Code\":0,\"Trace\":\"#0 \\\/var\\\/www\\\/virtual\\\/bz5\\\/html\\\/3rdparty\\\/doctrine\\\/dbal\\\/lib\\\/Doctrine\\\/DBAL\\\/DBALException.php(128): Doctrine\\\\DBAL\\\\Driver\\\\AbstractMySQLDriver->convertException('An exception oc...', Object(Doctrine\\\\DBAL\\\\Driver\\\\PDOException))\\n#1 \\\/var\\\/www\\\/virtual\\\/bz5\\\/html\\\/3rdparty\\\/doctrine\\\/dbal\\\/lib\\\/Doctrine\\\/DBAL\\\/Connection.php(855): Doctrine\\\\DBAL\\\\DBALException::driverExceptionDuringQuery(Object(Doctrine\\\\DBAL\\\\Driver\\\\PDOMySql\\\\Driver), Object(Doctrine\\\\DBAL\\\\Driver\\\\PDOException), 'SELECT `c`.`car...', Array)\\n#2 \\\/var\\\/www\\\/virtual\\\/bz5\\\/html\\\/lib\\\/private\\\/DB\\\/Connection.php(195): Doctrine\\\\DBAL\\\\Connection->executeQuery('SELECT `c`.`car...', Array, Array, NULL)\\n#3 \\\/var\\\/www\\\/virtual\\\/bz5\\\/html\\\/3rdparty\\\/doctrine\\\/dbal\\\/lib\\\/Doctrine\\\/DBAL\\\/Query\\\/QueryBuilder.php(206): OC\\\\DB\\\\Connection->executeQuery('SELECT `c`.`car...', Array, Array)\\n#4 \\\/var\\\/www\\\/virtual\\\/bz5\\\/html\\\/lib\\\/private\\\/DB\\\/QueryBuilder\\\/QueryBuilder.php(214): Doctrine\\\\DBAL\\\\Query\\\\QueryBuilder->execute()\\n#5 \\\/var\\\/www\\\/virtual\\\/bz5\\\/html\\\/apps\\\/dav\\\/lib\\\/CardDAV\\\/CardDavBackend.php(910): OC\\\\DB\\\\QueryBuilder\\\\QueryBuilder->execute()\\n#6 \\\/var\\\/www\\\/virtual\\\/bz5\\\/html\\\/apps\\\/dav\\\/lib\\\/CardDAV\\\/AddressBookImpl.php(96): OCA\\\\DAV\\\\CardDAV\\\\CardDavBackend->search('1', 'wol', Array)\\n#7 \\\/var\\\/www\\\/virtual\\\/bz5\\\/html\\\/lib\\\/private\\\/ContactsManager.php(45): OCA\\\\DAV\\\\CardDAV\\\\AddressBookImpl->search('wol', Array, Array)\\n#8 \\\/var\\\/www\\\/virtual\\\/bz5\\\/html\\\/lib\\\/private\\\/Collaboration\\\/Collaborators\\\/RemotePlugin.php(59): OC\\\\ContactsManager->search('wol', Array)\\n#9 \\\/var\\\/www\\\/virtual\\\/bz5\\\/html\\\/lib\\\/private\\\/Collaboration\\\/Collaborators\\\/Search.php(65): OC\\\\Collaboration\\\\Collaborators\\\\RemotePlugin->search('wol', 200, 0, Object(OC\\\\Collaboration\\\\Collaborators\\\\SearchResult))\\n#10 \\\/var\\\/www\\\/virtual\\\/bz5\\\/html\\\/apps\\\/files_sharing\\\/lib\\\/Controller\\\/ShareesAPIController.php(181): OC\\\\Collaboration\\\\Collaborators\\\\Search->search('wol', Array, true, 200, 0)\\n#11 [internal function]: OCA\\\\Files_Sharing\\\\Controller\\\\ShareesAPIController->search('wol', 'folder', 1, 200, NULL, true)\\n#12 \\\/var\\\/www\\\/virtual\\\/bz5\\\/html\\\/lib\\\/private\\\/AppFramework\\\/Http\\\/Dispatcher.php(161): call_user_func_array(Array, Array)\\n#13 \\\/var\\\/www\\\/virtual\\\/bz5\\\/html\\\/lib\\\/private\\\/AppFramework\\\/Http\\\/Dispatcher.php(91): OC\\\\AppFramework\\\\Http\\\\Dispatcher->executeController(Object(OCA\\\\Files_Sharing\\\\Controller\\\\ShareesAPIController), 'search')\\n#14 \\\/var\\\/www\\\/virtual\\\/bz5\\\/html\\\/lib\\\/private\\\/AppFramework\\\/App.php(115): OC\\\\AppFramework\\\\Http\\\\Dispatcher->dispatch(Object(OCA\\\\Files_Sharing\\\\Controller\\\\ShareesAPIController), 'search')\\n#15 \\\/var\\\/www\\\/virtual\\\/bz5\\\/html\\\/lib\\\/private\\\/AppFramework\\\/Routing\\\/RouteActionHandler.php(47): OC\\\\AppFramework\\\\App::main('OCA\\\\\\\\Files_Shari...', 'search', Object(OC\\\\AppFramework\\\\DependencyInjection\\\\DIContainer), Array)\\n#16 [internal function]: OC\\\\AppFramework\\\\Routing\\\\RouteActionHandler->__invoke(Array)\\n#17 \\\/var\\\/www\\\/virtual\\\/bz5\\\/html\\\/lib\\\/private\\\/Route\\\/Router.php(297): call_user_func(Object(OC\\\\AppFramework\\\\Routing\\\\RouteActionHandler), Array)\\n#18 \\\/var\\\/www\\\/virtual\\\/bz5\\\/html\\\/ocs\\\/v1.php(78): OC\\\\Route\\\\Router->match('\\\/ocsapp\\\/apps\\\/fi...')\\n#19 {main}\",\"File\":\"\\\/var\\\/www\\\/virtual\\\/bz5\\\/html\\\/3rdparty\\\/doctrine\\\/dbal\\\/lib\\\/Doctrine\\\/DBAL\\\/Driver\\\/AbstractMySQLDriver.php\",\"Line\":115}","userAgent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko\/20100101 Firefox\/61.0","version":"13.0.5.2"}

Da ist scheinbar etwas in den Tabellen oc_cards und oc_cards_properties nicht in Ordnung.

Jemand eine Idee wie man das fixen kann?

Gruß
Michael

Tja, da hängt’s bei mir auch: Alles läuft nach einem Neuaufsetzen von Debian 9,5 prima, nur “Teilen” geht mit Nextcloud 13.0.5 nicht. #kopfkratz … wofür war Nextcloud nochmal gut? (Scherz).

Ich hab die Apps einmal alle soweit möglich deaktiviert, occ repair und utf8mb4-Anpassung laufen lassen, Verzeichnisrechte gecheckt, direkt in der Datenbank die Kollation versucht anzupassen (viele Tabellen werden bei frischer Installation statt als utf8mb4 “nur” als utf8 angelegt), mit einer automatischen Korrektur die Installation einmal zerschossen und wieder frisch aufgesetzt.

In der Version 13.0.4 klappt das überdingens noch gut, werde wohl vorsorglich erstmal downgraden.
Hat niemand/jemand/irgendwer eine Idee woran es hängen könnte?

Sieht so aus, als ob Nextcloud versucht eine utf8 Tablle als utf8mb4 Tabelle anzusprechen.

  • Wie ist denn die Collation der Tabellen oc_cards bzw. oc_cards_properties?
  • Steht 'mysql.utf8mb4' => true, in der config.php?
  • ‘mysql.utf8mb4’ => true, steht in der config.php
  • die collatzion der Tabelle oc_cards steht auf utf8_bin
  • die collation der Tabelle oc_cards_properties steht auf auch auf utf8_bin

in meiner anderen, funktionierenden NC-Instanz sind alle Tabellen utf8mb4_bin.

Wie kann ich das korrigieren (utf8_bin -> utf8mb4_bin)? Einfach alle Tabellen im phpMyAdmin umstellen?

Entweder:
du stellst du den Eintrag in der config.php auf false
oder das hilft dir weiter: https://docs.nextcloud.com/server/13/admin_manual/configuration_database/mysql_4byte_support.html

Ich habe mich für die Anpassung der config.php entschieden.

'mysql.utf8mb4' => false,

Damit werden die User beim Teilen wieder angezeigt.

Welche Nachteile hat das deaktivieren dieses Parameters?

Falls du Emojis benutzen möchtest, brauchst du utfmb8. Ansonsten hat das keine Auswirkungen.

Ne, will ich nicht :wink:

Prima. Danke.

…hm. #grübel
Erstmal danke für die Tipps :slight_smile:

Ich habe ‘mysql.utf8mb4’ in der config.php auf false gesetzt und alle Tabellen fix von Hand auf utf8mb4_bin umgestellt. Am SQL-Server wollte ich jetzt nicht auch noch Änderungen vornehmen, da auch andere Anwendungen darauf laufen. Es funzt jetzt aber zumindest mit den Freigaben in den Desktop- und Mobil-Apps wieder, wenn auch maintenance:repair bei

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

hängen bleibt. Sei’s drum, das Log-Protokoll bleibt zumindest jetzt sauber und die Cloud erfüllt ihren Zweck.

Gruß, M

Sinnigerweise müsste der Eintrag in der config.php auf true gestellt werden, wenn die Datenbanktabellen auf utfmb8 eingestellt sind.

Allerdings hast du die falsche Collation benutzt. Richtig ist utf8mb4_general_ci. Ich würde nicht empfehlen Nextcloud mit einer falschen collation der Tabellen zu betreiben.

Wie man die Umstellung durchführt ist ausführlich hier beschrieben: Enabling MySQL 4-byte support — Nextcloud 13 Administration Manual 13 documentation

Hi, Ich kann leider keinen Link mehr teilen. Woran könnte das liegen?

Hast du einen AdBlocker? Hast du den mal deaktiviert?

1 Like

Das war das Problem! Danke