DB Import klappt nicht: 150 "Foreign key constraint is incorrectly formed"

Hallo ich hoffe auf Eure Hilfe. Stecke beim DB-Import fest und komme nicht weiter. DB-Import scheitert mit folgender Fehlermeldung: „150 „Foreign key constraint is incorrectly formed““

Ausgangssituation:
Ich möchte den DB-Export von 16.0.3-Instanz bei Domainhoster auf einer lokalen Installation importieren.

Vorgangsweise:
Vorbereitung Windows-PC:
Windows11 pro, aktuelles System
Doliwamp lt. Anleitung installiertm, kann mich am System über den Browser anmelden
(Erstinstallationsversion 17.0.1)

DB-Anmeldung über CMD-Fenster, da WAMP kein PhpMyAdmin installiert hat
cmd als Administrator ausgeführt
mysql-Anmeldung an die Maria-DB (user: dolibarrmysql)
Zugriff auf die Datenbank funktioniert (show tables, select, etc.)

Hosting-Seite:
Vorbereitung SQL-Datei (erstellt mittels mysqldump (php), da mysqldump bei meinem hoster auf einen Fehler läuft). Beim Export „DROP Table“ bei Struktur mit angehakt, sowie UTF8. Alle anderen Parameter nicht aktiviert, keine Kompression.

Im File selbst habe ich alle Tabllenpräfixe von „bimp_“ auf „llx_“ geändert. Datenbankname auf „dolibarr“ (wie die lokale DB heißt) geändert. Use-Befehl angepasst.

Fehlermeldung beim Import:
D:\2_doliwamp\dolibarr1\bin\mariadb\mariadb10.6.5\bin>mysql dolibarr -h localhost -P 3306 -u dolibarrmysql -proot < D:/3_sourcen/arbeitsversionen/20230515_u205729db3MitDropTable.sql
ERROR 1005 (HY000) at line 2341: Can’t create table dolibarr.llx_accounting_journal (errno: 150 „Foreign key constraint is incorrectly formed“)

Folgende Versuche:
Der Eintrag „SET FOREIGN_KEY_CHECKS=0;“ in der Importdatei greift nicht, da der user dolibarmysql schein bar kein superuser ist.
Ich kann die Prüfung auch nicht global mit dem User ausschalten (SET @@GLOBAL.foreign_key_checks=0;)

Ich habe versucht mir einen eigenen Superuser anzulegen und danach die globalen Einstellungen für die Prüfung zu deaktivieren:
CREATE USER ‚superuser‘@‚%‘ IDENTIFIED BY ‚root‘;
GRANT ALL PRIVILEGES ON . TO ‚superuser‘@‚%‘ WITH GRANT OPTION;
danach die Einstellungen gesetzt und kontrolliert:
SELECT @@GLOBAL.foreign_key_checks, @@SESSION.foreign_key_checks; Liefert als Ergebnis jeweils „1“ für aktiv.
SET @@SESSION.foreign_key_checks=0;
SET @@GLOBAL.foreign_key_checks=0;
SELECT @@GLOBAL.foreign_key_checks, @@SESSION.foreign_key_checks; Liefert als Ergebnis jeweils „0“ für inaktiv.

Import der SQL-Datei über folgenden Befehl schlägt trotzdem wieder mit der oben erwähnten Fehlermeldung fehl:
mysql dolibarr -h localhost -P 3306 -u dolibarrmysql -proot < D:/3_sourcen/arbeitsversionen/20230515_u205729db3MitDropTable.sql

Heute ist Tag 2 wo ich mit diesem Problem kämpfe und bin mit meinem Latein am Ende.
Hat jemand einen Tipp für mich wie ich den Import erfolgreich durchführen kann?
Danke vorab für Eure Unterstützung,

Gruß Achim

Hallo Achim,

wenn ich das richtig verstehe, dann möchtest du einen DB Export der Dolibarr Version 16.0.3 lokal bei dir einspielen. Lokal hast du die Dolibarr Version 17.0.1 installiert. Ich vermute mal, dass du die Fehler aus diesem Grund bekommst. Mein Vorschlag wäre lokal auch erstmal eine Version 16.0.3 zu installieren und dann die Datenbank zu importieren. Danach kannst du ein Upgrade bis Version 17.0.1 durchführen. Hintergrund ist, dass die Datenbank Schemas der beiden Versionen leicht unterschiedlich sein können und das Upgrade transferiert sozusagen die alte Version auf die nächste Version des Datenbank Schemas.

Gruß Sven

Hallo Achim und Sven,
sollte Svens Vorschlag, den ich genauso gemacht hätte, nicht funktionieren, solltest Du die Tabellen der Datenbank auf den Zeichensatz prüfen.
Ich bin mir nicht ganz sicher, ob auf dem Windows Rechner standartmäßig UTF-8 unterstützt wird.

Grüße
Karl-Heinz

Hallo Sven,
Hallo Karl-Heinz, danke für Eure rasche Antworten.
@Sven: Ja, Du hast mein Problem richtig zusammengefasst.

Da ich Windows-Anwender bin und keine Virtualisierung verwende (Docker, Images, oder ähnliches) habe ich nur die Möglichkeit die Versionen 16.0.5 oder 17.0.1 von DoliWAMP (Dolibarr ERP - CRM - Browse /Dolibarr installer for Windows (DoliWamp) at SourceForge.net ) herunterzuladen.

Mit DoliWAMP stellt sich dann die Herausforderung, dass kein PHPMyAdmin mit installiert ist. Daher der Weg über das CLI (Command Line Interface).

Der Import scheitert ja konkret an einer Abhängigkeit (Fremdschlüssel + Prüfung).

Ich habe versucht, so genau wie möglich der Anleitung von Dolibarr zu folgen. Das Problem trifft ja nicht nur mich, sondern viele andere User, was ich so bemerkt habe…

Gleich vorweg:
Die Lösung für mich war alle Tabellen der DB zu löschen und danach das Dump-File wieder einzulesen.

Aber der Reihe nach - denn, nach wie vor ungelöst ist der nicht funktionierende Import:

Folge ich nun den Anleitungen von Dolibarr, dann kann ich mittels mysql - Befehl dem Dump importieren.
Dazu wird in einem anderen Hilfeartikel empfohlen, die Prüfung auf Fremdschlüssel (Foreign_key_checks) zu deaktivieren. SET FOREIGN_KEY_CHECKS=0;) Leider greift der Befehl nicht - weder auf meiner lokalen Installation, noch bei meinem Webhoster, wo ich den Dump mittels PHPMyAdmin versuche zu importieren.

@Karl-Heinz: Weil es weder auf meinem Windows-Rechner, noch bei meinem Hoster funktioniert, vermute ich, dass es nichts mit dem Zeichensatz zu tun hat.

Gibt es keine Möglichkeit die Prüfung der Fremdbeziehung auszuschalten? Meine Versuche im Dump (SET FOREIGN_KEY_CHECKS=0;) greift leider nicht!
Ev. noch andere Ideen, warum der Import nicht klappt?

Gruß Achim
PS: Ich bin Techniker :face_with_monocle: :thinking:, aber kein Programmierer oder DB-Admin :slight_smile:

Hi Achim,
du hast geschrieben, dass du den Datenbank Export auch bei deinem Hoster importieren wolltest, es aber nicht ging. War es die Dolibarr Version 16.0.3? Wenn nein, dann solltest du es damit nochmal bei deinem Hoster probieren. Falls das nicht geht, sehe ich nur die folgenden Möglichkeiten um auszuschließen das der Import wegen anderen Datenbank Schemas fehlschlägt:

  1. Auf deinem Windows ein Xampp installieren und Dolibarr dort mit der Version 16.0.3 installieren.
  2. Alternativ kannst du die DolWamp Version 16.0.5 probieren. Hier ist zumindest die wahrscheinlichkeit höher, das die Schemata zusammenpassen.

Wegen der Fremdbeziehungsprüfung: Das Flag FOREIGN_KEY_CHECKS ist genau das richtige. Ich vermute wie du, dass es an den Berechtigungen liegen kann.
Kannst du es mal mit dem root User probieren?
Welche Datenbank verwendest du?
Kannst du den Link posten, welchen du als Anleitung verwendest?

Gruß Sven

Hallo Sven,
also:

…auch bei deinem Hoster importieren wolltest, es aber nicht ging.

Korrekt. Hoster: easyname. Zugang zum phpmyadmin über webinterface. Bei easyname kann man eine Webinstallation vornehmen. Man wählt was man gerne installiert haben möchte ( in meinem Fall dolibarr 17.0.0). Dann passiert viel Magie :wink: und nach einigen Minuten ist Installation fertig.
DB-Installationsverzeichnis: /data/web/e1xxxxx/html/apps/dolibarr-123456
DB-User: generiert, Daten aus der /html/apps/dolibarr-123456/conf/conf.php

  • dort ist der db_name, der db_user und das pw hinterlegt. (da habe ich keinen Einfluss)
  • Der DB-User hat keine Rechte ausserhalb der dolibarr-datenbank. also er kann kein CREATE DATABASE oder DROP DATABASE, etc. ausführen. Was aber sehr wohl geht ist, dass alle Tabellen in der bestehenden DB gelöscht werden. Dann gibt es nur noch die DB als leere Hülle. In diese kann ich dann den mysql-Dump importieren. DA keine Tabellen vorhanden sind, kommt es auch zu keiner Fehlermeldung bez. der Fremdschlüssel.

Lösungsvorschlag 1: Es war / ist schon ziemlich zeitaufwändig mit DoliWAMP und PHPMyAdmin u. Hoster herumzuhantieren. Wenn möglich möchte ich daher weiteren Wissensaufbau in Richtung XAMP, Docker oder ähnliches vermeiden.

Mir geht es eigentlich darum, dass alle „offiziellen“ Anleitungen, die ich zum Thema gefunden habe, nicht funktionieren. Ich denke hier sollten wir als Community ansetzen, damit das Produkt insgesamt Anerkennung erhält. Daher meine Hartnäckigkeit. :smirk:
Ich prüfe das noch einmal mit dem DolWamp. Ich hab’s leider nicht dokumentiert aber ich glaube mich zu erinnern, dass es auch nicht funktioniert hat.
Das Folgende habe ich LOKAL, also nicht beim Hoster, durchgeführt:

  • Während der Installation habe ich keine Möglichkeit dem root user ein Kennwort zu vergeben.
  • Es wird ein User (ich glaube dolibarrmysql erstellt, der sich gegen die DB anmelden kann
  • allerdings hat der User dann auch keine root Rechte mehr (nachdem die Installation durchgelaufen ist)
  • Ich bin das umgangen, in dem ich dann wenn die Mariadb fertig installiert war, aber die Installation von dolibarr noch nicht begonnen hat, mir einen superuser für die DB anzulegen. Mit dem konnte ich dann Rechte auf den dolibarmysql-user vergeben. ich konnte sogar mit dem superuser die globalen Einstellungen der DB auf die Prüfung des foreigen_keys ein- und ausschalten. Allerdings hatte das keine Auswirkungen beim Import des dumpfiles.
  • wie gesagt, dass prüfe ich aber noch einmal nach und poste es dann hier…

Zu den Foreign_Key_checks:
Ich habe leider keinen root-User beim hoster. daher kann ich lediglich innerhalb der angelegten DB agieren (also z.B. die Tabellen löschen);
Weiters kann ich über den Import-Reiter im PHPMyAdmin Interface die Datei importieren. Allerdings kommt der Fehler wie oben beschrieben, wenn die Tabellen nicht gelöscht wurden.
Datenbank: MariaDB Version MySQL or MariaDB 5.7.36-39-log
Link: Restore database Fail - Installing my Dolibarr - Dolibarr international forum
Teilweise Erkenntnisse auch von hier: Gestion d’entreprise avec Dolibarr - YouTube
Vor allem die Videos S4V24*

Kann jemand bestätigen, dass ein Import des Dump-Files so wie in den Admin-Tools von Dolibarr angegeben (/usr/bin/mysql datenbankname -h localhost -P 3306 -u datenbankuser -p************ < pfadmybackupfile.sql) funktioniert?

Klappt das bei Dir Sven?

LG Achim

Hi Achim,
ich habe die Woche erst ein Backup mit einem Dump File (auch via PHP) erstellt und dann in ein lokales Dolibarr eingespielt. Das funktioniert, allerdings war beides Version 16.0.5

Gruß Sven

Hi Achim,

konntest du den Import mittlerweile erfolgreich durchführen?

Gruß Sven

Hallo Sven, derzeit arbeite ich daran, dass der „normale“ upgrade von Version X auf Version Y bei meinem Hoster funktioniert. Danach widme ich mich wieder dem Import. Import hat ja geklappt, allerdings nur durch vorheriges Löschen der Tabellen. Halte den Thread am Laufenden bis zu einem finalen Ergebnis.
Gruß Achim