我有以下表格,我试图在MySQL中运行它们但我不断得到一个errno 150.只是不确定为什么,但MySQL似乎无法创建外键约束。我已经看过为InnoDB设置FK的规则,一切似乎都没问题。有人可以借给我另一套眼睛和专业知识吗?
-- Table publication_type (parent table)
CREATE TABLE publication_type (
id int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
publication_type varchar(55) NOT NULL,
tstamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT publication_type_pk PRIMARY KEY (id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
-- Table publication (child table)
CREATE TABLE publication (
id int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
authors varchar(255) NOT NULL,
publication_title varchar(100) NOT NULL,
publication_type_id int(11) UNSIGNED NOT NULL,
user_id int(11) UNSIGNED NOT NULL,
CONSTRAINT publication_pk PRIMARY KEY (id),
CONSTRAINT publication_type_fk FOREIGN KEY (publication_type_id) REFERENCES publication_type(id) ON DELETE SET NULL ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
答案 0 :(得分:0)
类型不匹配:
int UNSIGNED
的类型为publication.publication_type_id
int
的类型为UIScrollView
另请参阅文档:http://dev.mysql.com/doc/refman/5.1/en/create-table-foreign-keys.html,具体来说:
外键和引用键中的对应列必须 有类似的数据类型。 整数类型的大小和符号必须是 相同的。字符串类型的长度不必相同。对于 非二进制(字符)字符串列,字符集和排序规则 必须是一样的。
强调我的。