SQL Fehler beim Update auf 0.9.9
- 
 Hallo Leute, habe heute Versucht von version 0.8.3 auf 0.9.9 zu updaten. Leider bekomme ich nur einen weisen Bildschrim mit folgender SQL Meldung: isys_exception_database : Query error: 'ALTER TABLE `isys_catp_ip_list` DROP FOREIGN KEY `isys_catp_ip_list_ibfk_2`': Error on rename of './idoit_data/isys_catp_ip_list' to './idoit_data/#sql2-8bc-26c0cb' (errno: 152) Backtrace: #0 _get_backtrace() called at [/var/www/i-doit/src/classes/exceptions/isys_exception_database.class.php:24] #1 isys_exception_database->__construct(Query error: 'ALTER TABLE `isys_catp_ip_list` DROP FOREIGN KEY `isys_catp_ip_list_ibfk_2`': Error on rename of './idoit_data/isys_catp_ip_list' to './idoit_data/#sql2-8bc-26c0cb' (errno: 152), Array ([server] => 5.0.51a-24+lenny2,[host] => Localhost via UNIX socket,[client] => 5.0.51a,[proto] => 10)) called at [/var/www/i-doit/src/classes/components/isys_component_database.class.php:182] #2 isys_component_database->query(ALTER TABLE `isys_catp_ip_list` DROP FOREIGN KEY `isys_catp_ip_list_ibfk_2`) called at [/var/www/i-doit/src/classes/components/isys_component_dao.class.php:253] #3 isys_component_dao->update(ALTER TABLE `isys_catp_ip_list` DROP FOREIGN KEY `isys_catp_ip_list_ibfk_2`) called at [/var/www/i-doit/updates/classes/isys_update.class.php:1003] #4 isys_update->update_database(/var/www/i-doit/updates/versions/v0.9.9/update_data.xml, isys_component_database Object ([] => idoit_data,[] => Resource id #112,[] => isys_component_database_transaction_manager Object ([] => isys_component_database Object ( *RECURSION*,[] => 1),[] => idoit,[] => VtVzvB5zQLW9hNXE,[] => localhost,[] => 3306), 1) called at [/var/www/i-doit/updates/classes/isys_update.class.php:245] #5 isys_update->update(idoit_system, Array ([9] => idoit_data,[10] => idoit_spielemandant)) called at [/var/www/i-doit/updates/update.inc.php:451] #6 include_once(/var/www/i-doit/updates/update.inc.php) called at [/var/www/i-doit/index.php:278] (Extended Information: array ( 'server' => '5.0.51a-24+lenny2', 'host' => 'Localhost via UNIX socket', 'client' => '5.0.51a', 'proto' => 10, ))Kann mir da geholfen werden? 
- 
 Das hört sich ganz so an wie mein Fehler  
 Siehe hier in diesem Thread steht schon einiges dazu: http://www.i-doit.org/forum/index.php/topic,1356.0.html
- 
 hallo, leider bringt auch die lösung aus diesem Post nix. 
 Ich habe es jetzt mit dem idoit-0.9.9-update-FK-FiX versucht, leider bekomme ich da nach dem Update wieder:isys_exception_database : Query error: 'ALTER TABLE `isys_catp_ip_list` DROP FOREIGN KEY `isys_catp_ip_list_ibfk_2`': Error on rename of './idoit_data/isys_catp_ip_list' to './idoit_data/#sql2-8bc-367e93' (errno: 152) Backtrace: #0 _get_backtrace() called at [/var/www/i-doit/src/classes/exceptions/isys_exception_database.class.php:24] #1 isys_exception_database->__construct(Query error: 'ALTER TABLE `isys_catp_ip_list` DROP FOREIGN KEY `isys_catp_ip_list_ibfk_2`': Error on rename of './idoit_data/isys_catp_ip_list' to './idoit_data/#sql2-8bc-367e93' (errno: 152), Array ([server] => 5.0.51a-24+lenny2,[host] => Localhost via UNIX socket,[client] => 5.0.51a,[proto] => 10)) called at [/var/www/i-doit/src/classes/components/isys_component_database.class.php:182] #2 isys_component_database->query(ALTER TABLE `isys_catp_ip_list` DROP FOREIGN KEY `isys_catp_ip_list_ibfk_2`) called at [/var/www/i-doit/src/classes/components/isys_component_dao.class.php:253] #3 isys_component_dao->update(ALTER TABLE `isys_catp_ip_list` DROP FOREIGN KEY `isys_catp_ip_list_ibfk_2`) called at [/var/www/i-doit/updates/classes/isys_update.class.php:1003] #4 isys_update->update_database(/var/www/i-doit/updates/versions/v0.9.9/update_data.xml, isys_component_database Object ([] => idoit_data,[] => Resource id #112,[] => isys_component_database_transaction_manager Object ([] => isys_component_database Object ( *RECURSION*,[] => 1),[] => idoit,[] => VtVzvB5zQLW9hNXE,[] => localhost,[] => 3306), 1) called at [/var/www/i-doit/updates/classes/isys_update.class.php:245] #5 isys_update->update(idoit_system, Array ([9] => idoit_data,[10] => idoit_spielemandant)) called at [/var/www/i-doit/updates/update.inc.php:451] #6 include_once(/var/www/i-doit/updates/update.inc.php) called at [/var/www/i-doit/index.php:278] (Extended Information: array ( 'server' => '5.0.51a-24+lenny2', 'host' => 'Localhost via UNIX socket', 'client' => '5.0.51a', 'proto' => 10, ))
- 
 keine Tips mehr? würde den Entwicklerteam auch einen SQL Dump zur Verfügung stellen 
- 
 Hallo, führ bitte das hier aus: SHOW CREATE TABLE isys_catp_ip_list; und schreib das Ergebnis hier. Vermutlich heißen in Ihren DB die Foreign keys anderes als in den o.g. Fix. 
- 
 Hallo gr, 
 ergebniss:Table: sys_catp_ip_list CREATE TABLE `isys_catp_ip_list` ( `isys_catp_ip_list__id` int(10) unsigned NOT NULL auto_increment, `isys_catp_ip_list__isys_ip_assignment__id` int(10) unsigned default NULL, `isys_catp_ip_list__isys_catp_ip__id` int(10) unsigned NOT NULL default '0', `isys_catp_ip_list__title` varchar(255) collate utf8_unicode_ci default NULL, `isys_catp_ip_list__description` text collate utf8_unicode_ci, `isys_catp_ip_list__status` int(10) unsigned default '1', `isys_catp_ip_list__property` int(10) unsigned default '0', `isys_catp_ip_list__hostname` varchar(255) collate utf8_unicode_ci default NULL, `isys_catp_ip_list__dhcp` int(10) unsigned default '0', `isys_catp_ip_list__address` varchar(255) collate utf8_unicode_ci default NULL, `isys_catp_ip_list__mask` varchar(255) collate utf8_unicode_ci default NULL, `isys_catp_ip_list__primary` int(10) unsigned default NULL, `isys_catp_ip_list__gateway` varchar(255) collate utf8_unicode_ci default NULL, `isys_catp_ip_list__dns_domain` varchar(255) collate utf8_unicode_ci default NULL, `isys_catp_ip_list__dns_server` varchar(255) collate utf8_unicode_ci default NULL, `isys_catp_ip_list__active` int(10) unsigned default NULL, PRIMARY KEY (`isys_catp_ip_list__id`), KEY `isys_catp_ip_list_FKIndex1` (`isys_catp_ip_list__isys_catp_ip__id`), KEY `isys_catp_ip_list_FKIndex2` (`isys_catp_ip_list__isys_ip_assignment__id`) ) ENGINE=InnoDB AUTO_INCREMENT=76 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
- 
 Hallo, wie ich gedacht habe, in der update-data.xml, heissen die Foreign keys "isys_catp_ip_list_ibfk_1" und "isys_catp_ip_list_ibfk_2". In Ihren DB (???) heissen die aber "isys_catp_ip_list_FKIndex1" und "isys_catp_ip_list_FKIndex2" und Drop-Befehl (löschen) kann nicht ein Feld löschen was nicht vorhanden ist. In idoit-0.9.9-update-FK-FiX-Datei, finde die Datei update-data.xml (liegt hier: idoit-0.9.9-update-FK-FiX\updates\versions\v0.9.9) und in der Datei update-data.xml in der Zeile 1249 und 1251 ersetze die zwei Zeilen: ALTER TABLE isys_catp_ip_listDROP FOREIGN KEYisys_catp_ip_list_ibfk_2;ALTER TABLE isys_catp_ip_listDROP FOREIGN KEYisys_catp_ip_list_ibfk_1;mit: ALTER TABLE isys_catp_ip_listDROP FOREIGN KEYisys_catp_ip_list_FKIndex1;
 ALTER TABLEisys_catp_ip_listDROP FOREIGN KEYisys_catp_ip_list_FKIndex2;
- 
 hallo gr, werde das dann mal teste. Noch eine Frage dazu: der Auszug oben ist vom Mandanten 1. wir haben aber 2. Muss ich da noch was ändern? 
- 
 Führe noch mal SHOW CREATE TABLE isys_catp_ip_list; aus. Und dann prüfe mal wie die key für den 2. Mandant definiert sind: KEY isys_catp_ip_list_FKIndex1(isys_catp_ip_list__isys_catp_ip__id),
 KEYisys_catp_ip_list_FKIndex2(isys_catp_ip_list__isys_ip_assignment__id)also: CREATE TABLE isys_catp_ip_list(
 isys_catp_ip_list__idint(10) unsigned NOT NULL auto_increment,
 isys_catp_ip_list__isys_ip_assignment__idint(10) unsigned default NULL,
 isys_catp_ip_list__isys_catp_ip__idint(10) unsigned NOT NULL default '0',
 isys_catp_ip_list__titlevarchar(255) collate utf8_unicode_ci default NULL,
 isys_catp_ip_list__descriptiontext collate utf8_unicode_ci,
 isys_catp_ip_list__statusint(10) unsigned default '1',
 isys_catp_ip_list__propertyint(10) unsigned default '0',
 isys_catp_ip_list__hostnamevarchar(255) collate utf8_unicode_ci default NULL,
 isys_catp_ip_list__dhcpint(10) unsigned default '0',
 isys_catp_ip_list__addressvarchar(255) collate utf8_unicode_ci default NULL,
 isys_catp_ip_list__maskvarchar(255) collate utf8_unicode_ci default NULL,
 isys_catp_ip_list__primaryint(10) unsigned default NULL,
 isys_catp_ip_list__gatewayvarchar(255) collate utf8_unicode_ci default NULL,
 isys_catp_ip_list__dns_domainvarchar(255) collate utf8_unicode_ci default NULL,
 isys_catp_ip_list__dns_servervarchar(255) collate utf8_unicode_ci default NULL,
 isys_catp_ip_list__activeint(10) unsigned default NULL,
 PRIMARY KEY (isys_catp_ip_list__id),
 KEYisys_catp_ip_list_FKIndex1(isys_catp_ip_list__isys_catp_ip__id),
 KEYisys_catp_ip_list_FKIndex2(isys_catp_ip_list__isys_ip_assignment__id)
 ) ENGINE=InnoDB AUTO_INCREMENT=76 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
- 
 hallo gr, ich fasse mal fix zusammen: firmenmandant: CREATE TABLE `isys_catp_ip_list` ( `isys_catp_ip_list__id` int(10) unsigned NOT NULL auto_increment, `isys_catp_ip_list__isys_ip_assignment__id` int(10) unsigned default NULL, `isys_catp_ip_list__isys_catp_ip__id` int(10) unsigned NOT NULL default '0', `isys_catp_ip_list__title` varchar(255) collate utf8_unicode_ci default NULL, `isys_catp_ip_list__description` text collate utf8_unicode_ci, `isys_catp_ip_list__status` int(10) unsigned default '1', `isys_catp_ip_list__property` int(10) unsigned default '0', `isys_catp_ip_list__hostname` varchar(255) collate utf8_unicode_ci default NULL, `isys_catp_ip_list__dhcp` int(10) unsigned default '0', `isys_catp_ip_list__address` varchar(255) collate utf8_unicode_ci default NULL, `isys_catp_ip_list__mask` varchar(255) collate utf8_unicode_ci default NULL, `isys_catp_ip_list__primary` int(10) unsigned default NULL, `isys_catp_ip_list__gateway` varchar(255) collate utf8_unicode_ci default NULL, `isys_catp_ip_list__dns_domain` varchar(255) collate utf8_unicode_ci default NULL, `isys_catp_ip_list__dns_server` varchar(255) collate utf8_unicode_ci default NULL, `isys_catp_ip_list__active` int(10) unsigned default NULL, PRIMARY KEY (`isys_catp_ip_list__id`), KEY `isys_catp_ip_list_FKIndex1` (`isys_catp_ip_list__isys_catp_ip__id`), KEY `isys_catp_ip_list_FKIndex2` (`isys_catp_ip_list__isys_ip_assignment__id`) ) ENGINE=InnoDB AUTO_INCREMENT=76 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_cispielemandant CREATE TABLE `isys_catp_ip_list` ( `isys_catp_ip_list__id` int(10) unsigned NOT NULL auto_increment, `isys_catp_ip_list__isys_ip_assignment__id` int(10) unsigned default NULL, `isys_catp_ip_list__isys_catp_ip__id` int(10) unsigned NOT NULL default '0', `isys_catp_ip_list__title` varchar(255) collate utf8_unicode_ci default NULL, `isys_catp_ip_list__description` text collate utf8_unicode_ci, `isys_catp_ip_list__status` int(10) unsigned default '1', `isys_catp_ip_list__property` int(10) unsigned default '0', `isys_catp_ip_list__hostname` varchar(255) collate utf8_unicode_ci default NULL, `isys_catp_ip_list__dhcp` int(10) unsigned default '0', `isys_catp_ip_list__address` varchar(255) collate utf8_unicode_ci default NULL, `isys_catp_ip_list__mask` varchar(255) collate utf8_unicode_ci default NULL, `isys_catp_ip_list__primary` int(10) unsigned default NULL, `isys_catp_ip_list__gateway` varchar(255) collate utf8_unicode_ci default NULL, `isys_catp_ip_list__dns_domain` varchar(255) collate utf8_unicode_ci default NULL, `isys_catp_ip_list__dns_server` varchar(255) collate utf8_unicode_ci default NULL, `isys_catp_ip_list__active` int(10) unsigned default NULL, PRIMARY KEY (`isys_catp_ip_list__id`), KEY `isys_catp_ip_list_FKIndex1` (`isys_catp_ip_list__isys_catp_ip__id`), KEY `isys_catp_ip_list_FKIndex2` (`isys_catp_ip_list__isys_ip_assignment__id`) ) ENGINE=InnoDB AUTO_INCREMENT=55 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ciWas komisch ist: Der Spielemandant hat 302 Tabellen, der Firmenmandant 303 
- 
 Das sind nun Auszüge aus der fehlerhaft geupdateten DB oder von einem 0.9.8-3 backup ? 
- 
 das ist der Auzug aus der aktuellen datenbank (Versionsstand 0.9.8-3) 
- 
 Hallo an alle. 
 Ich denke ich habe das Problem gelöst bzw. umgangen.
 Die lösung ist:
 1. Ein sauberes (leeres) I-doit System (V. 0.9.8-3 ) aufsetzen
 2. Das alte System (gefüllt) backupen und updaten. –> geht schief
 3. An der Fehlermeldung die "defekte" tabelle auslesen
 4. Altes System mit backup zurücksetzen
 5. Mit php-myadmin die "Problemtabelle" aus dem Sauberen System exportiern (mit Keys)
 6. Mit php-myadmin die Inserts aus der "Problemtabelle" im gefülten System exportiern
 7. Die "Problemtabelle" im alten System löschen, mit export aus dem sauberen System wieder erstellen und mit dem export aus dem gefülten System wieder befüllen.
 8. Die Schritte 1-7 gegebenenfalls wiederholen (bei mir waren ca. acht Tabellen betroffen)Irgendwann konnte das Datenbankupdate durchlaufen. 
 Bei dem Punkt "migration" gab es nochmal Probleme in der Tabelle "isys_cats_lic_group". Er konnte wiedermal die Schlüssel nicht löschen weil das umbenennen fehlschlägt.
 Der lösungsweg von oben funktionierte hier nicht.
 Die Tabelle war bei mir relativ klein. Ich hab ich sie einfach lehr geräumt und das Update konnte komplett durchlaufen.Das Problem ist jetzt das ich Datenbankfehler bekomme wenn ich im Webinterface Arbeite. 
 Beim öffnen eines Clients kommt beispielsweise:isys_exception_database : Query error: 'SELECT isys_catg_overview_list__id FROM isys_catg_overview_list WHERE (isys_catg_overview_list__isys_obj__id = '36') LIMIT 1;': Unknown column 'isys_catg_overview_list__isys_obj__id' in 'where clause'Hat jemand ne Idee? 
- 
 ALTER TABLE isys_catg_overview_listADDisys_catg_overview_list__isys_obj__idisys_catg_overview_list__isys_obj__idINT( 10 ) UNSIGNED NULL DEFAULT NULL;
- 
 Du hättest das hier auch probieren können: http://www.i-doit.org/forum/index.php/topic,1457.0.html 
- 
 Danke erstmal. Ich hab beides gerade Probiert. 
 Bei meiner etwas beschädigten 0.9.9 bringt das fix garnichts. Es läuft zwar durch behebt aber nicht mein Problem.
 bei einer v0.9.8.3 bekomme ich nur ein:
 "Fatal error: Call to undefined method isys_component_database::get_database() in /var/www/i-doit/updates/classes/isys_update.class.php on line 1217"
 im Browser geliefert
  Der SQL-befehl ist laut mysql syntaktisch falsch. 
 Ich hab ein wenig probiert und glaube jetzt der sollte so heißen:ALTER TABLE `isys_catg_overview_list` ADD `isys_catg_overview_list__isys_obj__id` INT( 10 ) UNSIGNED NULL DEFAULT NULL;Der befehl wird akzeptiert und ich bekomme im Webinterface einen neuen Fehler: isys_exception_database : Query error: 'SELECT * FROM isys_catg_application_list LEFT JOIN isys_connection ON isys_connection__id = isys_catg_application_list__isys_connection__id LEFT JOIN isys_obj ON isys_connection__isys_obj__id = isys_obj__id WHERE TRUE AND (isys_catg_application_list__isys_obj__id = '36') AND (isys_catg_application_list__id = '5')': Unknown column 'isys_catg_application_list__isys_connection__id' in 'on clause'
- 
 Dann wurde die Migration bei dir leider nicht richtig durchgeführt. Du musst wohl leider nochmal reverten, den Fehler den du bei der Migration hattest zuerst beheben und dann das Update auf die 0.9.9 ausführen 
- 
 Ich habe noch den DB-Dump aus v 9.8.3. 
 Der fix v0.9.9-fk-cleanup bringt mir allerdings den "fatal error" aus meinem letzten Post.
 Wie behebe ich jetzt die Probleme auf der DB?
 es waren vollgende Tabellen betroffen:
 Datenbank update
 isys_catp_ip_list
 isys_catg_nagios_list
 isys_dependency
 isys_nagios_contacts
 isys_file_versionMigration 
 isys_cats_lic_list
 Es ist immer der bekannte fehler bei dem die Keys nicht gelöscht werden können.
- 
 Hat niemand eine Lösung? 
