以下SQL在MySQL

时间:2015-12-11 05:07:07

标签: mysql innodb

以下SQL导致mysql在消息中生成错误1005和错误150:

CREATE TABLE Review_Record (
  id int NOT NULL PRIMARY KEY AUTO_INCREMENT UNIQUE ,
  file MEDIUMBLOB,
  submission_id INT not null ,
  reviewer_id VARCHAR(50) not null ,
  file_mime VARCHAR(20),
  rating INT,
  assigned_time TIMESTAMP default CURRENT_TIMESTAMP,
  completed_time TIMESTAMP,
  completed BOOLEAN DEFAULT FALSE ,
  FOREIGN KEY (submission_id) REFERENCES Submission (id),
  FOREIGN KEY (reviewer_id) REFERENCES Reviewer (id)
) ENGINE = INNODB;

查找mysql文档后,我找到有关此错误的以下描述:

  
      
  • 1005(ER_CANT_CREATE_TABLE)
  •   
     

无法创建表格。如果错误消息引用错误150,表   创建失败,因为外键约束不正确   形成。如果错误消息引用错误-1,则表创建   可能失败,因为该表包含匹配的列名称   内部InnoDB表的名称。

但我的外键约束是如何错误形成的?

1 个答案:

答案 0 :(得分:1)

创建外键时,务必确保数据类型和字符集相同。

在这种情况下,Reviewer.id(int)的数据类型与Review_Record.reviewer_id(varchar 50)不匹配。

(参见评论)