Konflikt FK-Unterstüzung durch gemischte Tabellentypen innodb/myISAM (gelöst)

Hast du einen Fehler in der aktuellen Version gefunden ? Diesen kannst du uns hier mitteilen und uns bei der Fehlersuche helfen.
Antworten
Langlaeufer
Beiträge: 69
Registriert: 9. Feb 2012, 21:26

Konflikt FK-Unterstüzung durch gemischte Tabellentypen innodb/myISAM (gelöst)

Beitrag von Langlaeufer »

ich habe von Version 4.0.7 auf 4.1.6 aktualisiert
10.3.32-MariaDB

Wenn ich eine neue Konfiguration für den Kategoriereport anlegen möchte passiert nicht. (auch nichts im debug-modus, nicht mal Einträge im Error_log)
Wenn ich eine Konfiguration kopieren möchte erhalte ich Im Debug-Modus folgenden Fehler angezeigt.

S Q L - E R R O R

CODE: 00000





B A C K T R A C E

FILE: adm_program/system/classes/Database.php
LINE: 689
CALL: Database->showError()

FILE: adm_program/system/classes/TableAccess.php
LINE: 539
CALL: Database->queryPrepared()

FILE: adm_program/system/classes/CategoryReport.php
LINE: 419
CALL: TableAccess->save()

FILE: adm_program/modules/category-report/preferences.php
LINE: 60
CALL: CategoryReport->saveConfigArray()
Zuletzt geändert von Langlaeufer am 9. Feb 2022, 14:53, insgesamt 2-mal geändert.
Langlaeufer
Beiträge: 69
Registriert: 9. Feb 2012, 21:26

Re: Anlegen einer neueren Konfiguration Kategoriereport funktioniert nicht

Beitrag von Langlaeufer »

aus dem logfile
Admidio.INFO: SQL: INSERT INTO adm_category_report (crt_org_id,crt_name,crt_col_fields) VALUES (?,?,?) [1,"Test","p1,p2"]

Admidio.CRITICAL: PDOException: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (***."adm_category_report", CONSTRAINT "adm_fk_crt_org" FOREIGN KEY ("crt_org_id") REFERENCES "adm_organizations" ("org_id") ON DELETE NO ACTION ON UPDATE NO ACTION) {"file":"***/adm_program/system/classes/Database.php","line":688,"class":"Database","function":"queryPrepared"}

oder fürs kopieren

Admidio.INFO: SQL: INSERT INTO adm_category_report (crt_org_id,crt_name,crt_col_fields) VALUES (?,?,?) [1,"Rollenzuordnung - Kopie","p2,p1,r2,c3,c16,c6,c4,adummy"] {"file":"***/adm_program/system/classes/Database.php","line":666,"class":"Database","function":"queryPrepared"}

Admidio.DEBUG: SQL: Execution time 0.518084 ms {"file":"***/adm_program/system/classes/Database.php","line":685,"class":"Database","function":"queryPrepared"}

Admidio.CRITICAL: PDOException: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (***."adm_category_report", CONSTRAINT "adm_fk_crt_org" FOREIGN KEY ("crt_org_id") REFERENCES "adm_organizations" ("org_id") ON DELETE NO ACTION ON UPDATE NO ACTION) {"file":"***/adm_program/system/classes/Database.php","line":688,"class":"Database","function":"queryPrepared"}
Langlaeufer
Beiträge: 69
Registriert: 9. Feb 2012, 21:26

Re: Anlegen einer neueren Konfiguration Kategoriereport funktioniert nicht

Beitrag von Langlaeufer »

Ich hab jetzt die Bedingung adm_fk_crt_org gelöscht.
Jetzt funktioniert das Einfügen.
Ich kann den Constraint auch nicht neu erstellen. Die Tabelle adm_organizations wird mir nicht angeboten (hier werden nur Tabellen vom Typ InnoDB angezeigt). adm_organizations ist von typ MyISAM.

Was kann ich dagegen tun?
Datenbank neu erstellen und alle daten neu importieren?

Ich hab den Eindruck, alte Tabellen sind vom Typ MyISAM und neuere vom Typ InnoDB. MyISAM unterstützt keine Fremdschlüssel
Benutzeravatar
fasse
Administrator
Beiträge: 6227
Registriert: 12. Nov 2005, 16:06

Re: Konflikt FK-Unterstüzung durch gemischte Tabellentypen innodb/myISAM

Beitrag von fasse »

Hi,

Admidio hatte schon immer InnoDB genutzt, allerdings konnte es sein, dass dein Webhoster früher kein InnoDB angeboten hat, dann hat MySQL automatisch MyIsam-Tabellen erstellt.

Du kannst die entsprechenden Tabellen aber auf InnoDB umstellen:
https://www.techandme.se/convert-myisam-to-innodb/

Viele Grüße
Fasse
Langlaeufer
Beiträge: 69
Registriert: 9. Feb 2012, 21:26

Re: Konflikt FK-Unterstüzung durch gemischte Tabellentypen innodb/myISAM

Beitrag von Langlaeufer »

Danke Fasse für den Tipp.

Ich hab jetzt aber sicherheitshalber die Datenbank neu anlegen lassen,
alle Einträge gelöscht und aus dem Backup neu importiert.
So sollte auch die Tabellenstruktur wieder vollkommen richtig sein.
Jetzt funktioniert auch alles.
Antworten