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
>
> »~~~sql
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