Error beim Update auf 0.9.9
-
Kann es sein, dass Du auf keiner einzigen Tabellen eine Foreign Key definiert hast?
Ich frage mich gerade, woran das liegen mag, welcher MySQL-Version setzt Du ein?
-
Moin hier erstmal einige Informationen zum Server:
PHP Version 5.2.11
MySQL Version 5.0.67i-doit ist im Einsatz seit Version 0.9.1
Habe das mal in der Datenbank überprüft und es ist in der tat so das bei isys_dependency ebenfalls kein FOREIGN KEY hinterlegt ist …
An sich sind die Updates bisher ja immer gut gelaufen ... -
Habe nun die FOREIGN KEYs für isys_dependency eingelesen.
Nun bekomme ich den Fehler das die für isys_file_version fehlen.isys_exception_database : Query error: 'ALTER TABLE
isys_file_version
DROP FOREIGN KEYisys_file_version_ibfk_2
': Error on rename of './idoit_mandant/isys_file_version' to './idoit_mandant/#sql2-ae6-7b' (errno: 152) Backtrace: #0 _get_backtrace() called at [/srv/www/htdocs/idoit/src/classes/exceptions/isys_exception_database.class.php:24] #1 isys_exception_database->__construct(Query error: 'ALTER TABLEisys_file_version
DROP FOREIGN KEYisys_file_version_ibfk_2
': Error on rename of './idoit_mandant/isys_file_version' to './idoit_mandant/#sql2-ae6-7b' (errno: 152), Array ([server] => 5.0.67,[host] => Localhost via UNIX socket,[client] => 5.0.67,[proto] => 10)) called at [/srv/www/htdocs/idoit/src/classes/components/isys_component_database.class.php:182] #2 isys_component_database->query(ALTER TABLEisys_file_version
DROP FOREIGN KEYisys_file_version_ibfk_2
) called at [/srv/www/htdocs/idoit/src/classes/components/isys_component_dao.class.php:253] #3 isys_component_dao->update(ALTER TABLEisys_file_version
DROP FOREIGN KEYisys_file_version_ibfk_2
) called at [/srv/www/htdocs/idoit/updates/classes/isys_update.class.php:1003] #4 isys_update->update_database(/srv/www/htdocs/idoit/updates/versions/v0.9.9/update_data.xml, isys_component_database Object ([] => idoit_mandant,[] => Resource id #96,[] => isys_component_database_transaction_manager Object ([] => isys_component_database Object ( RECURSION,[] => 1),[] => root,[] => PW,[] => localhost,[] => 3306), 1) called at [/srv/www/htdocs/idoit/updates/classes/isys_update.class.php:245] #5 isys_update->update(idoit_system, Array ([9] => idoit_mandant)) called at [/srv/www/htdocs/idoit/updates/update.inc.php:451] #6 include_once(/srv/www/htdocs/idoit/updates/update.inc.php) called at [/srv/www/htdocs/idoit/index.php:278] (Extended Information: array ( 'server' => '5.0.67', 'host' => 'Localhost via UNIX socket', 'client' => '5.0.67', 'proto' => 10, ))Wenn ich jedoch nun den Befehl zu einlesen der FOREIGN KEYs für diese Tabelle ausführe erhalte ich folgende Meldung:
ALTER TABLE
isys_file_version
ADD CONSTRAINTisys_file_version_ibfk_2
FOREIGN KEY (isys_file_version__isys_obj__id
) REFERENCESisys_obj
(isys_obj__id
) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINTisys_file_version_ibfk_1
FOREIGN KEY (isys_file_version__isys_file_physical__id
) REFERENCESisys_file_physical
(isys_file_physical__id
) ON DELETE NO ACTION ON UPDATE NO ACTION;Fehler:
#1452 - Cannot add or update a child row: a foreign key constraint fails (
idoit_mandant/#sql-ae6_a6
, CONSTRAINTisys_file_version_ibfk_2
FOREIGN KEY (isys_file_version__isys_obj__id
) REFERENCESisys_obj
(isys_obj__id
) ON DELETE CASCADE ON UPDATE CASCADE) -
Hmm,
also den Grund dafür, dass bei Dir anscheinend kein einziger Foreign Key definiert ist, kann man aus der Ferne schlecht abschätzen.Hat mal eine Migration von MyISAM auf InnoDB oder von MySQL4 auf MySQL5 stattgefunden? Könnte ja sein, wenn Du i-doit schon seit v0.9.1 einsetzt.
Schau' doch mal nach, ob es auf irgendeiner Tabelle überhaupt einen Foreign Key gibt.
-
Also in den Tabelle isys_dependency, isysgui_catg, isys_contact, isys_obj sind keine FOREIGN KEYs definiert
Kann mir ehrlich gesagt nicht erklären wie das passieren konnte … Es hat jedenfalls bisher noch keine Migration von MyISAM auf InnoDB stattgefunden. Auch ein Umstieg von MySQL v4 auf v5 hat nicht stattgefunden v5 wird bereits seit Anfang an eingesetzt.Hoffentlich lässt sich das ganze noch retten hab schon 300 Objekte eingetragen ... Und die Lizenz Verwaltung über i-doit kommt auch immer mehr ins rollen.
Vielen Dank schon mal für den tollen Support den man von euch bei echt jedem Problem bekommt -
Also was du mal versuchen könntest (Kann aber vielleicht aufgrund der bisher nicht gesetzten foreign keys schief gehen :() ist, in einer Testumgebung eine frische 0.9.8-3 installieren. Danach nur die "DATEN" in die 0.9.8-3 importieren (Exportieren zB mit phpMyAdmin und REPLACE INTO wählen). Und dann darauf das 0.9.9 update nochmal machen.
Ist nur ne Idee, ich weiss nicht so genau ob das replacen funktioniert -
Du meinst also unter PHPmyAdmin Export dort nur Daten und unten REPLACE auswählen.
Anschließend über die neue Datenbank importieren.
oder? -
Genau, also über die neue frische Mandanten Datenbank der 0.9.8-3
-
Erhalte beim Import folgenden Fehler
Error
SQL query:
REPLACE INTO isys_catd_distributor (isys_catd_distributor__id, isys_catd_distributor__isys_obj__id, isys_catd_distributor__isys_catd_dns__id, isys_catd_distributor__isys_catd_sanpool__id, isys_catd_distributor__isys_catd_drive__id, isys_catd_distributor__isys_catd_version__id) VALUES (1, 2, 1, 1, 1, 1), (2, 3, 2, 2, 2, 2), (3, 4, 3, 3, 3, 3), (4, 5, 4, 4, 4, 4), (5, 6, 5, 5, 5, 5), (6, 7, 6, 6, 6, 6), (7, 8, 7, 7, 7, 7), (8, 9, 8, 8, 8, 8), (9, 10, 9, 9, 9, 9), (10, 11, 10, 10, 10, 10), (11, 12, 11, 11, 11, 11), (12, 13, 12, 12, 12, 12), (13, 14, 13, 13, 13, 13), (14, 15, 14, 14, 14, 14), (15, 16, 15, 15, 15, 15), (16, 17, 16, 16, 16, 16), (17, 18, 17, 17, 17, 17), (18, 19, 18, 18, 18, 18), (19, 20, 19, 19, 19, 19), (20, 21, 20, 20, 20, 20), (21, 22, 21, 21, 21, 21), (22, 23, 22, 22, 22, 22), (23, 24, 23, 23, 23, 23), (24, 25, 24, 24, 24, 24), (25, 26, 25, 25, 25, 25), (26, 27, 26, 26, 26, 26), (27, 28, 27, 27, 27, 27), (28, 29, 28, 28, 28, 28), (29, 30, 29, 29, 29, 29), (30, 31, 30[…]
MySQL said: Documentation
#1452 - Cannot add or update a child row: a foreign key constraint fails (idoit_data02/isys_catd_distributor
, CONSTRAINTisys_catd_distributor_ibfk_1
FOREIGN KEY (isys_catd_distributor__isys_catd_version__id
) REFERENCESisys_catd_version
(`isys_catd_version_) -
Ok hatte ich mir fast gedacht.. Das geht dann so nicht
Was du aber noch versuchen kannst ist bei dem Replace Export vom PHPMyAdmin die Fremdschlüsselüberprüfung zu deaktivieren. Vielleicht funktionierts dann
-
Ok der Datenimport hat nun geklappt werde nun ein Update fahren und dann das Test System auf Live System umstellen.
Danke erstmal
-
Hey cool :-):-):-):-):-):-)
-
Also folgende neue Probleme haben sich ergeben.
Die Suchfunktion liefert keine Ordentlich Ergebnisse … Suche ich nach Mueller erhalte ich keiner Ergebnisse obwohl Objekte gibt welchen der Kontak Mueller zugewiesen ist.
Zudem werden unter Moduel sämtliche Module doppelt aufgelistet.
Und in der Kategorie Clients ist ebenfalls im Menü links jeder Eintrag doppelt.Ansonsten hat es beim Umstieg auf Version 0.9.9 keine weiteren Probleme gegeben.
-
Oh ich glaube das Replace into hat bei den Modulen nicht so ganz funktioniert. Versuch mal im phpmyadmin in der Tabelle isys_module alle neuen doppelten Module zu entfernen und danach am besten cache im temp/ Ordner löschen
Achso in Tabelle isysgui_catg und isysgui_cats müsstest du das Ganze dann auch machen -
So also nun sind die doppelten Einträge bei den Modulen verschwunden.
Jedoch habe ich noch immer doppelte Einträge bei den Unterpunkten des Clients wie auf dem ersten Screenshot zu sehen ist.
Und ja die Suchfunktion ist bei mir buggy. -
Ich denke das Replace Into hat an einigen stellen nicht ganz korrekt überschrieben.. Vielleicht versuchen wir doch lieber den Ansatz wieder zurueck auf 0.9.8-3 zu gehen und dort die fehlenden Foreign Keys aus der setup/sql/idoit_data.sql (ganz unten, wichtig ist hier die Datei aus der 0.9.8-3 zu verwenden) hinzuzufügen. Wenn welche existieren einfach den nächsten eintragen.
Und wenn die alle drin sind nochmal das 0.9.9 update ausprobieren -
Ich hab mal versucht das zu reproduzieren und ich habs geschafft ähnliche Fehler wie bei dir hinzubekommen und habe ein neues Update für einen solchen Fall gepackt:
http://www.i-doit.org/downloads/updates/idoit-0.9.9-update-FK-FiX.zipVersuch mal alles wieder auf 0.9.8-3 zurueck zu setzen und das genannte Update einzuspielen. Installiert sich wie die anderen auch, also einfach ins i-doit dir entpacken
-
Hallo ds,
erstmal vielen Dank für die Klasse UnterstützungNun zum aktuellen Stand.
- Habe mit deiner FK-FiX Update File ein Update probiert dabei erhalte ich die selbe Fehlermeldung wie anfangs auch. Habe auch bereits überprüft das auch wirklich die richtigen Updates Files verwendet werden.
isys_exception_database : Query error: 'ALTER TABLE
isys_catp_ip_list
DROP FOREIGN KEYisys_catp_ip_list_ibfk_2
': Error on rename of './idoit_mandant/isys_catp_ip_list' to './idoit_mandant/#sql2-529-65b' (errno: 152) Backtrace: #0 _get_backtrace() called at [/var/www/idoit02/src/classes/exceptions/isys_exception_database.class.php:24] #1 isys_exception_database->__construct(Query error: 'ALTER TABLEisys_catp_ip_list
DROP FOREIGN KEYisys_catp_ip_list_ibfk_2
': Error on rename of './idoit_mandant/isys_catp_ip_list' to './idoit_mandant/#sql2-529-65b' (errno: 152), Array ([server] => 5.1.37-1ubuntu5,[host] => Localhost via UNIX socket,[client] => 5.1.37,[proto] => 10)) called at [/var/www/idoit02/src/classes/components/isys_component_database.class.php:182] #2 isys_component_database->query(ALTER TABLEisys_catp_ip_list
DROP FOREIGN KEYisys_catp_ip_list_ibfk_2
) called at [/var/www/idoit02/src/classes/components…...[/quote]- Ich habe zudem Probiert wie in deinem vorherigem Beitrag die Foreignkeys Schritt für Schritt einzupflegen (In die Datenbank in der idoit noch auf Version 0.9.8.3 lief). Dabei ließen sich ein groß teil Problemlos einpflegen. Bei einigen jedoch kam es zu Problemen. Diese sehen wie folgt aus:
–------
ERROR
#1452 - Cannot add or update a child row: a foreign key constraint fails (idoit_mandant
.#sql-529_387
, CONSTRAINTisys_catg_application_list_ibfk_2
FOREIGN KEY (isys_catg_application_list__isys_obj__id
) REFERENCESisys_obj
(isys_obj__id
) ON DELETE NO ACTI)ALTER TABLE
isys_catg_application_list
ADD CONSTRAINTisys_catg_application_list_ibfk_1
FOREIGN KEY (isys_catg_application_list__isys_catg_application__id
) REFERENCESisys_catg_application
(isys_catg_application__id
) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINTisys_catg_application_list_ibfk_2
FOREIGN KEY (isys_catg_application_list__isys_obj__id
) REFERENCESisys_obj
(isys_obj__id
) ON DELETE NO ACTION ON UPDATE NO ACTION;
–-----–-----
ERROR
#1452 - Cannot add or update a child row: a foreign key constraint fails (idoit_mandant
.#sql-529_393
, CONSTRAINTisys_catg_global_list_ibfk_5
FOREIGN KEY (isys_catg_global_list__isys_contact__id
) REFERENCESisys_contact
(isys_contact__id
) ON DELETE SET N)ALTER TABLE
isys_catg_global_list
ADD CONSTRAINTisys_catg_global_list_ibfk_1
FOREIGN KEY (isys_catg_global_list__isys_purpose__id
) REFERENCESisys_purpose
(isys_purpose__id
) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINTisys_catg_global_list_ibfk_2
FOREIGN KEY (isys_catg_global_list__isys_catg_global__id
) REFERENCESisys_catg_global
(isys_catg_global__id
) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINTisys_catg_global_list_ibfk_3
FOREIGN KEY (isys_catg_global_list__isys_catg_global_category__id
) REFERENCESisys_catg_global_category
(isys_catg_global_category__id
) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINTisys_catg_global_list_ibfk_4
FOREIGN KEY (isys_catg_global_list__isys_guarantee_period_unit__id
) REFERENCESisys_guarantee_period_unit
(isys_guarantee_period_unit__id
) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINTisys_catg_global_list_ibfk_5
FOREIGN KEY (isys_catg_global_list__isys_contact__id
) REFERENCESisys_contact
(isys_contact__id
) ON DELETE SET NULL ON UPDATE NO ACTION;–-----
An sich erhalte ich diesen Fehler bei allen restlich einzutragenden FOREIGN KEYs.
Da bei der Installation des Updates immer die fehlenden FOREIGN KEYs der Tabelle isys_file_version an-gemeckert wurden und ich diese jedoch auf Grund des selben Fehler wie oben nicht einspielen konnte, habe ich diese Tabelle samt Inhalt gelöscht. Anschließend den CREATE Befehl aus der Installations-SQL Datei von Version 0.9.9 kopiert und auf der Datenbank ausgeführt. Danach ließen sich auch die FOREIGN KEYs für diese Tabelle einpflegen.Nun hat das Update erstmal geklappt jedoch fehlen mir noch einige FOREIGN KEY Verknüpfungen welche ich unten in der Datei angehängt habe.
PS: Die Such Funktion scheint unter Version 0.9.9 nicht zu funktionieren, auch in eurem Demo System liefert eine suche nach Kontakt Zuordnung wie auch nach SYS_ID ein leeres Ergebnis.
Schönes Wochenende euch allen
-
Die FK Fehler bekommst du wo genau ? Beim zurückspielen der 0.9.8-3 ??
-
Den FK Fehler erhalte ich wenn ich die FK Befehle aus der SQL Datei auf die Datenbank vom Versions Stand 0.9.8-3 zurück spielen möchte.