![]() |
SELFHTML Forumsarchiv |
|
|
Die folgende Nachricht zum Thema stammt von: Feluxe, 30. 07. 2008, 23:15
Moin moin. Ich bin am Verzweifeln... beim Anlegen folgender Tabellen bekomme ich einen errno 150 (also ein Problem mit dem foreign key):
//Tabellenstruktur für Tabelle `land`
mysql_query("CREATE TABLE IF NOT EXISTS `land` (
`Land_ID` int(11) NOT NULL auto_increment,
`Land_Name` text NOT NULL,
`Landessprache` text,
`Waehrung` text,
PRIMARY KEY (`Land_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_unicode_ci AUTO_INCREMENT=8");
//Tabellenstruktur für Tabelle `region`
mysql_query("CREATE TABLE IF NOT EXISTS `region` (
`Region_ID` int(11) NOT NULL auto_increment,
`Region_Name` text NOT NULL,
`Region_Beschreibung` text,
`Region_Sehenswuerdigkeiten` text,
`Land_ID` int(11) NOT NULL,
PRIMARY KEY (`Region_ID`),
INDEX (`Land_ID`),
CONSTRAINT `fk_Land` FOREIGN KEY (`Land_ID`) REFERENCES `Land` (`Land_ID`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_unicode_ci AUTO_INCREMENT=8");
Ich hab schon ne Stunde gegooglet und einige mögliche Lösungen gefunden: Sicherstellen, dass die Datentypen der beiden verknüpften Spalten übereinstimmen (stimmt, beides int(11)). SIcherstellen, dass der gleiche Character Set vorliegt (beides utf-8). Sicherstellen, dass das Fremdschlüssel-Feld indiziert ist (ist es). Mir fällt jetzt nichts mehr ein, woran das liegen könnte... kann mir hier jemand helfen? Gruß, Felix
Die folgende Nachricht zum Thema stammt von: Vinzenz Mai, 30. 07. 2008, 23:42
Hallo,
»» beim Anlegen folgender Tabellen bekomme ich einen errno 150 (also ein Problem mit dem foreign key):
mit folgenden Anweisungen (PHP-Kram entfernt)
»» CREATE TABLE IF NOT EXISTS `land` (
»» `Land_ID` int(11) NOT NULL auto_increment,
»» `Land_Name` text NOT NULL,
»» `Landessprache` text,
»» `Waehrung` text,
»» PRIMARY KEY (`Land_ID`)
»» ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_unicode_ci AUTO_INCREMENT=8
»CREATE TABLE IF NOT EXISTS `region` (
»» `Region_ID` int(11) NOT NULL auto_increment,
»» `Region_Name` text NOT NULL,
»» `Region_Beschreibung` text,
»» `Region_Sehenswuerdigkeiten` text,
»» `Land_ID` int(11) NOT NULL,
»» PRIMARY KEY (`Region_ID`),
»» INDEX (`Land_ID`),
»» CONSTRAINT `fk_Land` FOREIGN KEY (`Land_ID`) REFERENCES `Land` (`Land_ID`) ON DELETE CASCADE ON UPDATE CASCADE
»» ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_unicode_ci AUTO_INCREMENT=8
kann ich Dein Problem mit MySQL 5.0.51 nicht nachvollziehen.
Die Tabellen lassen sich problemlos anlegen, sowohl mit MySQL-Query-Browser
als auch mit dem mysql-Kommandozeilenclient.
Frage:
Warum verwendest Du für Deine Spalten den Datentyp TEXT statt VARCHAR(geeignete Länge)?
Freundliche Grüße
Vinzenz
Die folgende Nachricht zum Thema stammt von: Rouven, 30. 07. 2008, 23:45
Hello,
»» kann ich Dein Problem mit MySQL 5.0.51 nicht nachvollziehen.
»» Die Tabellen lassen sich problemlos anlegen, sowohl mit MySQL-Query-Browser
»» als auch mit dem mysql-Kommandozeilenclient.
verdammt, da war einer 30sekunden schneller...
MfG
Rouven
--
-------------------
sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
There's no such thing as a free lunch -- Milton Friedman
Die folgende Nachricht zum Thema stammt von: Feluxe, 31. 07. 2008, 11:18
»» Hallo,
»»
»» »» beim Anlegen folgender Tabellen bekomme ich einen errno 150 (also ein Problem mit dem foreign key):
»»
»» mit folgenden Anweisungen (PHP-Kram entfernt)
»»
»» »» CREATE TABLE IF NOT EXISTS `land` (
»» »» `Land_ID` int(11) NOT NULL auto_increment,
»» »» `Land_Name` text NOT NULL,
»» »» `Landessprache` text,
»» »» `Waehrung` text,
»» »» PRIMARY KEY (`Land_ID`)
»» »» ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_unicode_ci AUTO_INCREMENT=8
»»
»» »CREATE TABLE IF NOT EXISTS `region` (
»» »» `Region_ID` int(11) NOT NULL auto_increment,
»» »» `Region_Name` text NOT NULL,
»» »» `Region_Beschreibung` text,
»» »» `Region_Sehenswuerdigkeiten` text,
»» »» `Land_ID` int(11) NOT NULL,
»» »» PRIMARY KEY (`Region_ID`),
»» »» INDEX (`Land_ID`),
»» »» CONSTRAINT `fk_Land` FOREIGN KEY (`Land_ID`) REFERENCES `Land` (`Land_ID`) ON DELETE CASCADE ON UPDATE CASCADE
»» »» ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_unicode_ci AUTO_INCREMENT=8
»»
»» kann ich Dein Problem mit MySQL 5.0.51 nicht nachvollziehen.
»» Die Tabellen lassen sich problemlos anlegen, sowohl mit MySQL-Query-Browser
»» als auch mit dem mysql-Kommandozeilenclient.
»»
Dazu muss ich sagen, dass die Anweisungen bei meinem lokalen Webserver (xampp Distribution) ebenfalls einwandfrei funktionieren. MySQL-Version kann ich grad nicht nachgucken, ist aber eine 5.0.x. Probleme gab es erst, als ich die Tabellen in einer MySQL-Datenbank auf meinem gemieteten Webspace erzeugen wollte. Vielleicht liegt das also einfach an merkwürdigen Einstellungen beim Hoster...?
»» Frage:
»» Warum verwendest Du für Deine Spalten den Datentyp TEXT statt VARCHAR(geeignete Länge)?
»»
Weil da ziemlich lange Texte in die Spalten reinkommen (Beschreibungen eben). Die Länge ist da vorher nicht abzuschätzen... ansonsten gibts dafür keinen besonderen Grund. Hat denn der Datentyp TEXT irgendwelche Nachteile?
»»
»» Freundliche Grüße
»»
»» Vinzenz
Gruß, Felix
© 1998-2006
Impressum, Software: Classic Forum