Ich bin leider auf eine absolut unhaltbare Situation gestoßen. Durch einen Serverumzug muss ich eine Dolibarr Installation wiederherstellen. Abgesehen davon, dass wir das ohne weiteres per Webgui automatisieren könnten, schlägt der import in mariadb immer wieder fehl mit "Foreign key constraint is incorrectly formed"
Der Fehler stammt vom Mariadb Container und tritt in Version 12 - trotz SET FOREIGN_KEY_CHECKS=0;auf. Nach umfangreicher Recherche ist dies möglicherweise auf Differenzen im Charakterset zurückzuführen. Mehr konnte ich jedoch noch nicht herausfinden.
Der Grund wieso ich jetzt hier schreibe ist dass als Nutzer unsere Unternehmensdaten sowie die von Kunden für die wir solche Systeme betreiben in unwiderherstellbaren Backups gefangen sind. Die von Dolibarr Frankreich gereichten Videos zur Wiederherstellung schlagen nur die o.g. SET FOREIGN_KEY_CHECKS=0; vor, die aber nichts bringt.
ja du solltest auf jeden Fall immer vor einem Wiederherstellungsversuch den Inhalt der Datenbank löschen.
evtl. sind so die doppelten Einträge entstanden. Wenn zum Beispiel eine Wiederherstellung nicht komplett durch läuft und dann nochmals gestartet wird, kann es zu solchen Fehlern kommen.
Hab ich probiert. Der gleiche Fehler tritt auf. Ich hab die Datenbank komplett dedropped, neu erstellt (weil sonst weint er dass es die nicht gibt). Der Fehler tritt leider weiterhin auf.
Danke für deine Mühe. Es ist echt super da nicht alleine dran zu hängen.
mysqldump funktioniert in der Version von Mariadb nicht mehr soweit ich weiß. Ich bekomme auf jeden Fall einen Fehler dass der Befehl nicht existiert. Ich hab stattdessen mariadb-dump benutzt und folgendes Ergebnis bekommen:
mariadb-dump: Couldn't execute 'SHOW FUNCTION STATUS WHERE Db = 'dolibarr'': Column count of mysql.proc is wrong. Ex pected 22, found 21. Created with MariaDB 110402, now running 120302. Please use mariadb-upgrade to fix this error ( 1558)
Ich bin jetzt unschlüssig ob ich den docker container einfach downgraden soll auf 11.04.02 oder ob ich ein “mariadb-upgrade” durchführen soll. beides kann jeweils mein letzter Fehler mit dieser installation sein.
wäre ja naheliegend dass das auch das problem beim import auslöst.
Edit: ich habe jetzt mal vorsichtshalber einen manuellen Datenexport nach CSV gemacht damit ich im Zweifel zumindest die Daten retten kann. Ich glaube zwar dass das wiederherstellbar wäre aber ein CSV Import ist ein bisschen wie Bargeld.
beim Import der CSV Daten fällt auf dass Export und Import nicht auf einander abgestimmt sind und sehr mühsam und langsam sind dadurch. Da muss auf jeden Fall nachgearbeitet werden. Ich werde mir mal ansehen wie das vielleicht besser gehen könnte.
ich habe einen funktionierenden Workaround gefunden. Container herunterfahren, Volume mit tar archivieren und dann in ein neues volume hineinschreiben. denkbar wäre auch eine direkte kopie mit rsync. dann neue installation hochfahren, installationsprozess nochmal durchführen (grund unbekannt) und zack, alles drüben, zumindest bei mir.
mit der neuen installation und ohne Gefahr von Datenverlust habe ich die Datenbank aktualisiert. Dies hatte keine Probleme zur Folge, löste das Export-Problem und hat den Fehler beim Import verändert von “ticket” zu “account” als problemtabelle. ich werde weiter berichten falls es neuigkeiten gibt. Bitte Backups UNBEDINGT PRÜFEN!
Ein grafisches Tool ala “MySQL-Workbench”, Database Workbench o.ä. zum direkten Zugriff auf die Datenbank wäre evtl. auch hilfreich.
Und bei den ganzen mysqldump bzw. mariadb-dump den dump ohne “stored procedures” und “functions” durchführen. Dolibarr benutzt imho keine “stored procedures” oder “functions”.
Das nun der Fehler schon bei llx_account kommt liegt wohl daran das diese Tabelle am Anfang der DB steht. D.h. es ist davon auszugehen das noch viele andere Fehler folgen können.