Willkommen im kivitendo Forum! Hier erweitern und teilen AnwenderInnen und EntwicklerInnen ihr Wissen.

Teste kivitendo!

kivitendo Demo

kivitendo Demo mit Schweizer Kontenplan und neuem Layout

Unterstützt kivitendo mit der Basis-Subskription!

0 Punkte

hallo,

Beim Anlagen eines neuen Kunden erhalte ich in unregelmäßigen Abständen folgende Fehlermeldung:

INSERT INTO customer (id, name) VALUES (?, '') (30446)
FEHLER: doppelter Schlüsselwert verletzt Unique-Constraint »customer_pkey«

DETAIL: Schlüssel »(id)=(30446)« existiert bereits.

Die id ist nicht richtig. normalerweise müsste hier eine Zahl größer als 34500 zur Anwendung kommen.
1 bis 2 mal kann man Kunden ganz normal anlegen, dann komm dieser o.g. Fehler.

Auch nach einem Neustart der Datenbank kann man (ich oder irgend ein anderer Benutzer) keinen neuen Kunden anlagen.

Wodurch wird der Index für die Neuvergabe der id gesetzt?

Was kann man hier machen?

von (480 Punkte)

1 Antwort

0 Punkte

Achtung: das Vorgehen erfordert direkte Manipulation der DB. Da ich mit zu 99,999% sicher bin, dass der Fehler allerdings eh schon durch einen wie auch immer gearteten direkten Eingriff in die DB zustande kam (und keinesfalls durch "normale" Benutzung über die Oberfläche), ist das bestimmt kein Problem.

Der Datenbankzähler für die ID-Spalte in der Tabelle customer heißt id. Leider wird dieser auch bei diversen anderen Tabellen genutzt. Also muss man den Zähler auf das Maximum aller ID-Spalten setzen, die den Zähler verwenden.

Welche Tabellen das sind, kann man herausbekommen, indem man sich einen Datenbankdump nur des Tabellenschemas anzeigen lässt (pg_dump --schema-only ...) und darin nach Spaltendefinitionen sucht, deren DEFAULT-Wert z.B. nextval('id') und ähnliche Konstrukte enthält.

Dann von all diesen Spalten das Maximum heraussuchen lassen, von allen Maxima das Maximum nehmen und den DB-Zähler auf diesen Wert hochsetzen (siehe PostgreSQL-Dokumentation).

von

Ähnliche Fragen

0 Punkte
1 Antwort
0 Punkte
1 Antwort
0 Punkte
2 Antworten
0 Punkte
1 Antwort
Gefragt 28, Dez 2017 von Anonym
...