Hallo,
ich hatte gerade das Problem, dass eine mit SQLyog exportierte Datenbank mit mehreren innoDB-Tabellen und FOREIGN KEY CONSTRAINTS einen Fehler bei der Erzeugung verursachte. Daran saß ich seit einiger Zeit.
Code:
CREATE TABLE `tabelle_1` (
`id` int(11) NOT NULL default '0',
`taet_id` int(11) NOT NULL default '0',
PRIMARY KEY (`id`,`taet_id`),
KEY `FK32F5BC33A39E605E` (`taet_id`),
CONSTRAINT `FK32F5BC33A39E605E` FOREIGN KEY (`taet_id`) REFERENCES `tabelle_2` (`taet_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Zitat:
|
#1005 - Can't create table '.\datenbank\tabelle_1.frm' (errno: 150)
|
Das Auslagern der Fremdschlüssel-Definition ans Ende der Import.sql brachte schließlich die Lösung:
Code:
CREATE TABLE `tabelle_1` (
`id` int(11) NOT NULL default '0',
`taet_id` int(11) NOT NULL default '0',
PRIMARY KEY (`id`,`taet_id`),
KEY `FK32F5BC33A39E605E` (`taet_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- weitere Anweisungen
ALTER TABLE `tabelle_1`
ADD CONSTRAINT `FK32F5BC33A39E605E` FOREIGN KEY (`taet_id`) REFERENCES `tabelle_2` (`taet_id`);
Anders lies sich die Datenbank nicht portieren, sogar ein Kopieren des Datenbank-Ordners unter "mysql/data" schlug fehl. Hinter einigen Tabellen stand nun bei der Auflistung nicht mehr Collation und Größe, sondern "in use". Löschen liessen sie sich auch nicht mehr über phpMyAdmin (die Meldung beim Löschen war, dass die Tabelle nicht existiere), nurnoch über den Explorer.
Vielleicht kann ich mit diesem Posting dem ein oder anderen helfen etwas Zeit bei ähnlichen Problemen einzusparen.