我无法解决的SQL错误(7)

时间:2017-05-17 10:58:00

标签: mysql sql

任何人都可以帮助解决这个错误,当我运行我的代码它出现错误1005无法创建表我的代码看起来这样任何人都可以指出这个错误的来源我使用codio mysql如果有帮助< / p>

CREATE TABLE IF NOT EXISTS entries (
    entries_id INT NOT NULL AUTO_INCREMENT,
    students_id INT UNSIGNED NOT NULL,
    Date_of_exam DATETIME NOT NULL,
    subjects_id INT UNSIGNED NOT NULL,
    PRIMARY KEY (entries_id),
    FOREIGN KEY (students_id) REFERENCES students(students_id),
    FOREIGN KEY (subjects_id) REFERENCES subjects(subjects_id));

这是错误 MySQL的&GT;消息来源7 错误1005(HY000):无法创建表格&#39;考试。条目&#39; (错误:150)

2 个答案:

答案 0 :(得分:0)

此错误与外键有关。检查以下项目:

  • 外键上存在的表和列的名称是正确的。
  • 外键列的类型相同。
  • 外键数据与他们不冲突。

注意:您可以在查询时禁用检查外键。确定在查询后启用此选项。

SET FOREIGN_KEY_CHECKS=0;

CREATE TABLE IF NOT EXISTS entries (
  entries_id INT NOT NULL AUTO_INCREMENT,
  students_id INT UNSIGNED NOT NULL,
  Date_of_exam DATETIME NOT NULL,
  subjects_id INT UNSIGNED NOT NULL,
  PRIMARY KEY (entries_id),
  FOREIGN KEY (students_id) REFERENCES students(students_id),
  FOREIGN KEY (subjects_id) REFERENCES subjects(subjects_id)
);

SET FOREIGN_KEY_CHECKS=1;   

答案 1 :(得分:0)

错误本身与外键有关(因为删除它们会创建没有错误的表)。 主要可能的原因:

  • 其中一个参考表格不存在
  • 引用表的字段不存在
  • 引用表的数据类型不匹配(我假设是这样)。

我可以看到你桌面上的主键是INT,假设你使用INT作为主键,students_id是INT UNSIGNED,可能是你错误的原因。