2014-09-30 83 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类型

使两种类型同其他和它会工作

相关问题