Nach Update occ db:add-missing-primary-keys fehlgeschlagen

Hallo,

die Nextcloud läuft bei mir auf einen Raspberry 4 mit NGINX und Postgresql
ich habe von der Version:

19.0.4 auf 19.0.9 per cli upgedatet
db:convert-filecache-bigint war erforderlich
19.0.9 auf 20.0.8 per cli upgedatet
db:add-missing-indices war erforderlich
db:add-missing-primary-keys war erforderlich

Fehler:

~ $ sudo -u www-data php /var/www/html/occ db:add-missing-primary-keys
Check primary keys.
Adding primary key to the federated_reshares table, this can take some time…
federated_reshares table updated successfully.
Adding primary key to the systemtag_object_mapping table, this can take some time…
systemtag_object_mapping table updated successfully.
Adding primary key to the comments_read_markers table, this can take some time…
comments_read_markers table updated successfully.
Adding primary key to the collres_resources table, this can take some time…
collres_resources table updated successfully.
Adding primary key to the collres_accesscache table, this can take some time…
collres_accesscache table updated successfully.
Adding primary key to the filecache_extended table, this can take some time…
In AbstractPostgreSQLDriver.php line 51:
An exception occurred while executing ‘ALTER TABLE oc_filecache_extended ADD PRIMARY KEY (fileid)’:
SQLSTATE[23505]: Unique violation: 7 FEHLER: konnte Unique Index »oc_filecache_extended_pkey« nicht erstellen
DETAIL: Schlüssel (fileid)=(111384) ist doppelt vorhanden.
In PDOConnection.php line 83:
SQLSTATE[23505]: Unique violation: 7 FEHLER: konnte Unique Index »oc_filecache_extended_pkey« nicht erstellen
DETAIL: Schlüssel (fileid)=(111384) ist doppelt vorhanden.
In PDOConnection.php line 78:
SQLSTATE[23505]: Unique violation: 7 FEHLER: konnte Unique Index »oc_filecache_extended_pkey« nicht erstellen
DETAIL: Schlüssel (fileid)=(111384) ist doppelt vorhanden.
db:add-missing-primary-keys

danach habe ich noch db:convert-filecache-bigint ausgeführt

Wie finde ich die doppelten Schlüssel und muss ich diese manuell entfernen?
Kann ich die Instanz bis zur behebung dennoch laufen lassen oder werden die Probleme noch größer?

Grüße Jörg

Am besten manuell mit der Datenbank verbinden und den Eintrag (bzw. die Einträge) mit dem Schlüssel 111384 anschauen. Davon einen löschen. Es geht direkt über das Terminal, oder evtl. gibt es für pgsql ein webinterface wie phpmaydmin für mysql/mariadb

Ich verwende, mangels ARM Unterstützung für PostgreSQL, phpPgAdmin Version 7.13. und es funktioniert ganz gut.

Vielen Dank schon mal.
ich habe versucht phppgadmin zu installieren jedoch bekomme ich es mit Nginx nicht zum laufen es wird trotz eigener config immer auf die Domain der Nextcloud umgeleitet.
Ich kann nicht finden wo dies in Nginx configuriert wurde.

bzw. wie kann ich die Index über die cli Befehle finden?

phppgadmin läuft bei mir unter Apache 2.4. Zur Konfiguration unter Nginx kann ich nichts sagen. phppgadmin selber hat nur eine config-Datei unter config/config.inc.php. Dort stellst Du die Datenbank ein, das wars eigentlich.
Unter Apache habe ich nichts konfiguriert. phppgadmin ist ein Unterordner im document-root. Gestartet wird es per index.php.
Der Aufruf ist bei mir: phppgadmin/index.php.

Vielleicht magst Du hier mal schauen: Wikipedia: PhpPgAdmin

Hallo ich versuche immernoch phppgadmin mit NGINX zum laufen zu bekommen selbst wenn ich die die Nextcloud Konfig rausnehme und Nginx neu starte versucht er über die Cloud Domain zu gehen jedoch dürfte er die doch gar nicht mehr kennen?

Der versuch mit einem anderen Port scheitert in Ladefehler…

server{
server_name 192.168.0.55;
listen 192.168.0.55:8080;
root /var/www/phppgadmin;
index index.php index.html index.htm;
access_log /var/log/phppgadmin/access.log;
error_log /var/log/phppgadmin/error.log;
location ~ .php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}

Ist noch irgendwo was wo sich er sich Konfig Infos holt?

Hallo Joerg01,

wie gesagt, den nginx verwende ich nicht. Ich kenne mich mit der Konfiguration des Servers im eigentlichen Sinne auch nicht aus. Noch weniger kenne ich Deine Konfiguration.
An der “listen” Direktive, speziell Port 8080, erkenne ich, dass Du hier einen Proxy Server verwendest? Bzw. ngnix auch als Proxy fungiert? Evtl. Richtungsweisend für Dich zur Suche.

Ich möchte nicht zu tief in das Thema einsteigen, aber versuch doch mal eine einfache index.html zu schreiben und im Document-Root des Webserver abzulegen.
Der Aufruf über den Browser sollte: http://192.168.0.55:8080/index.html sein, und anschließend musst Du deine index.html sehen können.
Dieser Aufruf sollte nicht irgendwie umgeleitet werden. In der index.php des phppgadmin gibt es ebenfalls keine Automatische Weiterleitungen oder Umleitungen.
PHPpgAdmin hat auch nichts mit dem Nextcloud Projekt zu tun, und ist ein eigenständiges Projekt.

Eine passende Web-Server Konfiguration müsste in etwa so aussehen:
server{
server_name 192.168.0.55;
listen 192.168.0.55:80;
root /var/www/test;
index index.html;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
}

Vielleicht auch ein Blick Wert: nginx.org - Beginner’s Guide

Hallo LloydS,

ja das es nichts mit der Cloud zu tun hat ist mir klar es ist ein Nginx Problem ich habe alle Konfigurationen aus den Ordnern entfernt und dennoch macht der Server ein Redirekt (glaube das heißt so) auf die externe Adresse der Cloud mir ist nicht klar wo er das her hat sollte alles leer sein.

ich denke es ist ja auch egal in welchen Ordner dads index.html ist da es ja mit root … aufgerufen wird.

Ich habe nämlich

/var/www/html #für die Nextcloud
/var/www/test #funktioniert nicht
/var/www/phppgadmin #funktioniert nicht

in den Serverkonfigs sind die immer unter root /xxx/; eingetragen

Hallo Joerg01,

ich kann dazu nicht viel sagen. Das aktuelle Diskusionsthema passt auch nicht mehr zum Titel.
Vieleicht willst Du einen neuen Thread hier aufmachen - wobei ich befürchte, dass Du sehr schnell an das Nginx Forum weiterverwiesen wirst…

Das der Web-Server, in der Standartkonfiguration - also ohne Konfigdateien - gleich eine Weiterleitung macht, ist für mich schwer vorstellbar - aber nicht unmöglich.
Schau am besten ein zweites mal nach, ob Du nicht doch irgendwo eine Konfigdatei übersehen hast. Stichwörter sind rewrite, redirect, etc.
Schau bitte auch noch einmal in die Nginx Dokumentation, den Link findest Du weiter oben (Beginner’s Guide). Eine Umleitung muss in der Regel expliziet konfiguriert werden, standartmässig liefert ein Web-Server seine eigenen Web-Seiten aus.
Deinen letzten Satz verstehe ich nicht. Stelle sicher, dass Du weist, was der Web-Server machen soll, und wo es konfiguriert ist.

Hallo,

habe es jetzt endlich geschaft mich über phppgadminzu verbinden.

jedoch ist mir nicht ganz klar was ich hier tun kann da:

oc_filecache_extended_pkey ist nicht vorhanden. (steht ja auch im Fehler)
in oc_filecache ist die 111384 nur 1x vorhanden
in oc_filecache_extended sind die fileid´s laut Spalte count mehrfach vorhanden. (denke das ist normal) die 111384 lt. count 103x es gibt aber auch noch andere die mehrmals vorhanden sind.

Wenn ich nach der 111384 oder auch irgend etwas anderen suche bekomme ich folgendes zurück:

SQL-Fehler:
FEHLER: Spalte pp.proisagg existiert nicht
LINE 14: WHERE pp.pronamespace=pn.oid AND NOT pp.proisagg AND pp…
^
HINT: Vielleicht wurde beabsichtigt, auf die Spalte »pp.prolang« zu verweisen.
In der Anweisung: …

Es sieht für mich so aus als ob es am cache liegt kann ich den nicht irgendwie deaktivieren ggf. leeren und dann neu starten?

Was kann ich da tun?

Hallo Joerg01,

Prima! phppgadmin dient als grafische Oberlfäche für PostgreSQL. Nebenbei, PostgreSQL bringt aber auch eigene grafische Tools mit.

Aufgrund der Tatsache, dass ich hier einen Rechner mit ARM Prozessor habe, und hierfür keine aktuellen PostgreSQL Tools vorhanden sind, bin ich auf phppgadmin ausgewichen. Die PostgreSQL Tools wären für mich die erste Wahl.

Der SQL-Fehler bzgl. der Spalte “pp.prolang” liegt vermutlich an der phppgadmin Version, welche erstmal nicht mit PostgreSQL Datenbanken größer Version 10 umgehen kann.
Ich habe es damals gepatcht - bin mir nicht sicher, ich glaube aber, dass in der aktuellen Version von Github der Patch bereits eingebaut ist.
Schau mal hier: github.com - phppgadmin issues

Wenn Du einen x86 kompatiblen Prozessor hast, schau Dir vielleicht mal die Tools von PostgreSQL direkt an. Die gibt es sowohl für Linux als auch Windows. Per lokalem Netzwerk kannst Du sehr einfach auf die Datenbank zugreifen und auf phppgadmin verzichten. Oder das CLI-Tool verwenden.

Ansonsten GOTO 2.

Was es mit der Tabelle oc_filecache und oc_filecache_extended auf sich hat kann ich nicht sagen. Ich bekomme regelmässig Fehler zu beiden Tabellen - funktionieren tut es ansonsten. Allerdings läuft Nextcloud hier auch nicht produktiv, sondern im Spiel-Testbetrieb.

Nebenbei mal ein paar Zahlen (zum nachdenken):
Größe nc_data: 95 GB
Anzahl Ordner: 2252
Anzahl Dateien: 93495
Größe Datenbank: 175 MB
Tabelle oc_filecache: 210210 Zeilen
Tabelle oc_filecache_extended: 14077 Zeilen

Viele Grüße!