Dublicate entry for key PRIMARY - nach DB-Migration

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Dublicate entry for key PRIMARY - nach DB-Migration

Beitrag von rethus » Do 11. Apr 2019, 10:27

Hi Leute,
ich habe hier bei Contenido eine DB-Migration machen müssen... Artikel, templates usw. um den Inhaltlichen Datenbestand bei veränderter Konfiguration wieder herzustellen.

Hat soweit auch funktioniert. Nun habe ich allerdings das Problem, das ich in den Syslogs z.B. beim anlegen eines neuen Artikels DB-Fehler bezüglich der PRIMARY-ID's bekomme.
Sehen dann ungefähr so aus:

Code: Alles auswählen

/contenido/main.php?area=con_editart&frame=4&action=con_saveart&contenido=f4a5b577cafb10f512787fbf0954bc1e MySQL error 1062: Duplicate entry '8208' for key 'PRIMARY'
INSERT INTO con_art (idart, idclient) VALUES ('8208', '4')

 /contenido/main.php?area=con_editart&frame=4&action=con_saveart&contenido=f4a5b577cafb10f512787fbf0954bc1e MySQL error 1062: Duplicate entry '8228' for key 'PRIMARY'
INSERT INTO
                        con_art_lang (
Ich habe bereits in Mysql alle Tabellen einmal "optimiert", damit mögliche Index-Key für Autoincrement angeglichen werden. Das hat das Problem aber nicht behoben.

Weiß ggf. jemand aus dem Stehgreif, ob Contenido intern einen eigenen Zähler für die Tabellen hat, über den er die ID's für die PRIMARY-Spalte vergibt?

PS: In diesem Fall ist es contenido 4.8
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType

rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: Dublicate entry for key PRIMARY - nach DB-Migration

Beitrag von rethus » Do 11. Apr 2019, 11:07

Habs gefunden. con_sequence.
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Dublicate entry for key PRIMARY - nach DB-Migration

Beitrag von Faar » Do 11. Apr 2019, 11:16

rethus hat geschrieben:
Do 11. Apr 2019, 10:27
Hi Leute,
ich habe hier bei Contenido eine DB-Migration machen müssen...
:(
Duplicate entry '8208' for key 'PRIMARY'
INSERT INTO con_art (idart, idclient) VALUES ('8208', '4')
Vermutlich passiert hier folgendes:
Autoincrement legt bereits eine Primary-ID an, bevor die Daten dort eingelesen werden.
Dann kommt das: INSERT INTO con_art (idart, idclient) VALUES ('8208', '4')
Also, diese eine ID die bereits mit autoincrement erzeugt wurde, soll nochmal mit einer ID belegt werden.
Das mag AUTOINCREMENT gar nicht, absolut nicht, weil autoincrement das selbst verwaltet.
Ich habe bereits in Mysql alle Tabellen einmal "optimiert", damit mögliche Index-Key für Autoincrement angeglichen werden. Das hat das Problem aber nicht behoben.
Wenn es so ist, wie oben beschrieben, dann nützt das auch nichts.
Weiß ggf. jemand aus dem Stehgreif, ob Contenido intern einen eigenen Zähler für die Tabellen hat, über den er die ID's für die PRIMARY-Spalte vergibt?
Auf jeden Fall war das so, bis zu irgendeiner Version.
Selbst im Setup von 4.10 ist noch ALTER TABLE xxx AUTO_INCREMENT drin, weil eben manche ältere Tabellen noch kein Autoincrement hatten.
TRUNCATE TABLE table_name; löscht alle Werte von Autoincrement und setzt es auf 1 zurück. Aber dann sind alle Daten auch weg.

Ich nehme an, dass beim Import bereits der Fehler passiert:
https://stackoverflow.com/questions/875 ... rimary-key

Hast Du noch die alte DB?
Wie sieht die SQL dieser Tabelle in der Konfiguration aus?
In der Sicherung stehen ja alle SQL Befehle, um die Tabellen wieder herzustellen und dann erst werden sie mit Werten gefüllt.
Wie sieht z.B. die CREATE TABLE con_art aus?
Diese SQL wird ja beim Export erzeugt und es kann sein, dass bei der Migration ein ALTER TABLE auto_increment auftaucht.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Dublicate entry for key PRIMARY - nach DB-Migration

Beitrag von Faar » Do 11. Apr 2019, 11:17

rethus hat geschrieben:
Do 11. Apr 2019, 11:07
Habs gefunden. con_sequence.
Was für eine Version ist oder war das?
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: Dublicate entry for key PRIMARY - nach DB-Migration

Beitrag von rethus » Fr 12. Apr 2019, 06:01

War ne 4.8.14er Version.
Falls es noch nicht entfernt wurde, wäre zu überlegen, die DB mal dahingehend umzustellen, das nur die DB-eigenen Autoincrements genutzt werden.
Auch da gibt es ja von Haus aus "nextid".

Wie es scheint wurde die con_sequence bei Contenido vor allem dafür ins Leben gerufen, um die nächste ID in der DB zu beziehen.
Würde man die entfernen, hätte man eine Fehlerquelle weniger.
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType

Antworten