繁体   English   中英

MySQL InnoDB外键问题

[英]MySQL InnoDB Foreign Key Problems

我有下面的表,我试图在MySQL中运行它们,但我不断得到errno150。只是不确定为什么,但是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;

类型不匹配:

publication_type.id的类型为int UNSIGNED

publication.publication_type_id的类型为int

另请参阅文档: http : //dev.mysql.com/doc/refman/5.1/en/create-table-foreign-keys.html ,特别是:

外键和引用键中的对应列必须具有相似的数据类型。 整数类型的大小和符号必须相同 字符串类型的长度不必相同。 对于非二进制(字符)字符串列,字符集和排序规则必须相同。

强调我的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM