Feluxe: errno 150: Problem mit foreign key

Beitrag lesen

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