MySQL InnoDB外键问题

时间:2015-09-15 16:13:57

标签: mysql foreign-keys innodb errno

我有以下表格,我试图在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;

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,具体来说:

  

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

强调我的。