2014-09-30 65 views
0

// tbl_gw創建,但是當我嘗試創建tbl_node它顯示一個錯誤ERROR 1005(HY000):無法創建表 'ss.tbl_node'(錯誤:150)

ERROR 1005 (HY000): Can't create table 'ss.tbl_node' (errno: 150)

我sql如下:

CREATE TABLE tbl_gw(id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,gid varchar(24),vid varchar(24),primary key(id)); 

CREATE TABLE tbl_node(nid SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, gid int(10),primary key(nid) ,FOREIGN KEY (gid) REFERENCES tbl_gw(gid)) ENGINE=INNODB; 
+0

是默認引擎InnoDB的?也許tbl_gw應該也有'ENGINE = INNODB'? – Giles 2014-09-30 09:26:36

+0

我曾試過,但是我又遇到了同樣的問題 – 2014-09-30 09:29:43

+0

你的列'tbl_node.gid'的類型是INT(10),引用了VARCHAR(24)類型的列'tbl_gw.gid'。此列甚至沒有索引。我假設它應該引用'tbl_gw.id'來代替。 – VMai 2014-09-30 09:34:43

回答

0

外鍵的數據類型和指向它的鍵應該是相同的。

在你的情況

CREATE TABLE tbl_gw(ID SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,GID VARCHAR(24),VID VARCHAR(24),主鍵(id));

CREATE TABLE tbl_node(NID SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, GID INT(10),主鍵(NID),外鍵(GID)參考文獻 tbl_gw(GID))ENGINE = INNODB;

GID是表tbl_gw varchar類型是不一樣的表tbl_node int類型

使兩種類型同其他和它會工作

相關問題