2009-08-05 147 views
2

我無法創建表,我不明白是什麼錯誤。 phpMyAdmin設置PRIMARY KEY聲明旁邊的錯誤指示器...我不明白爲什麼這是錯誤的...MySQL錯誤150,無法創建表

此表是一個子表,它與另一個表具有一對多的標識關係。

CREATE TABLE IF NOT EXISTS `ruilen`.`Voorwerpen` (
`voorwerpen_id` INT NOT NULL AUTO_INCREMENT , 
`naam` VARCHAR(45) NOT NULL , 
`beschrijving` VARCHAR(45) NULL , 
`Gebruikers_gebruiker_id` INT NOT NULL , 
PRIMARY KEY (`voorwerpen_id` , `Gebruikers_gebruiker_id`) , 
CONSTRAINT `fk_Voorwerpen_Gebruikers1` FOREIGN KEY (`Gebruikers_gebruiker_id`) REFERENCES `ruilen`.`Gebruikers` (
`gebruiker_id` 
) ON DELETE SET NULL ON UPDATE CASCADE 
) ENGINE = InnoDB; 

MySQL said: Documentation 
#1005 - Can't create table 'ruilen.voorwerpen' (errno: 150) 

編輯:這是所有錯誤代碼的文件,我可以找到:Link

EDIT2:PIC去除

EDIT3:

CREATE TABLE `gebruikers` (
`gebruiker_id` int(11) NOT NULL, 
`naam` varchar(45) NOT NULL, 
`straat` varchar(45) NOT NULL, 
`gemeente` varchar(45) NOT NULL, 
`mail` varchar(45) NOT NULL, 
`beschrijving` varchar(45) DEFAULT NULL, 
PRIMARY KEY (`gebruiker_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 

回答

14

檢查Gebruikers_gebruiker_idGebruikersgebruiker_id具有相同的數據類型。

另請檢查Gebruikersgebruiker_idPRIMARY KEYGebruikers

更新:

您沒有定義ON DELETE SET NULL,而你的Gebruikers_gebruiker_id被定義爲NOT NULL

修復它(更改爲ON DELETE CASCADE或只是刪除該子句),您就可以創建參考。

+0

PIC添加更多的信息,你說的好像是這樣。 – KdgDev 2009-08-05 13:08:27

+0

您可以運行下面的語句:'SHOW CREATE TABLE Gebruikers'並在此輸出它的輸出? – Quassnoi 2009-08-05 13:17:59

+0

完成。我想知道是否需要將gebruiker_id設置爲唯一...但是MySQL工作臺似乎沒有這個選項... – KdgDev 2009-08-05 13:27:56

0

在我的人遇到這是MySQL的一個非常錯誤的特點 - 最簡單的方法是轉儲表結構和數據,然後刪除表並從轉儲重新運行SQL,然後手動重新創建索引和需要的外鍵約束。

2

這不是mysql的一大特色。 可能有兩個可能的原因! 1)PK和FK的數據類型不匹配。 2)此錯誤可能出現在4.1之前的版本中,您需要顯式定義索引。

4

我的情況它通常是因爲數據類型不匹配。請記住,如果它是一個int檢查,無論是要麼無符號或不

0

我有一個約束與不同的表中相同的名稱。 嘗試更改約束的名稱。

1

一個理由補充:

不同字符集或發動機也會出現這種問題

相關問題