MySQL phpMyAdmin:错误150(#1005)
我真的不确定问题出在哪里,但我一直在尝试创建的MySQL phpMyAdmin:错误150(#1005),mysql,sql,Mysql,Sql,我真的不确定问题出在哪里,但我一直在尝试创建的工作表上出错 CREATE TABLE Works_On(tid INT NOT NULL, startingDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP, id INT, Primary Key(id), Foreign Key(tid) REFERENCES Team(tid),Foreign Key(id) REFERENCES Cases(id)); CREATE TABLE Cases(id INT N
工作表上出错
CREATE TABLE Works_On(tid INT NOT NULL, startingDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP, id INT, Primary Key(id), Foreign Key(tid) REFERENCES Team(tid),Foreign Key(id) REFERENCES Cases(id));
CREATE TABLE Cases(id INT NOT NULL AUTO_INCREMENT, priority INT, name VARCHAR(255) NOT NULL, description TEXT, completionDate datetime, status VARCHAR(20), cid INT, Foreign Key(cid) REFERENCES Contact(cid), Primary Key(id));
CREATE TABLE Gives_Problem_To(tid INT NOT NULL, onDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP, cid INT NOT NULL, Primary Key(tid), Foreign Key(tid) REFERENCES Team(tid),Foreign Key(cid) REFERENCES Contact(cid));
我得到的错误是:#1005-无法创建表
我试图找出这个错误是什么,我得到了以下结果:
Storage Engines
InnoDB Documentation
Supports transactions, row-level locking, and foreign keys
这让我觉得我的外键有问题,但我不知道它到底有什么问题
编辑:我试图将案例的CREATE TABLE语句移到顶部,以防外键问题是由于在引用案例表之前未创建该表而引起的,现在我的phpAdmin在加载时卡住了…将案例的CREATE TABLE语句移到顶部修复了该问题。在表上创建外键约束时,必须先存在该表,然后才能引用它。解决方案如下所示:
CREATE TABLE Cases(id INT NOT NULL AUTO_INCREMENT, priority INT, name VARCHAR(255) NOT NULL, description TEXT, completionDate datetime, status VARCHAR(20), cid INT, Foreign Key(cid) REFERENCES Contact(cid), Primary Key(id));
CREATE TABLE Gives_Problem_To(tid INT NOT NULL, onDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP, cid INT NOT NULL, Primary Key(tid), Foreign Key(tid) REFERENCES Team(tid),Foreign Key(cid) REFERENCES Contact(cid));
CREATE TABLE Works_On(tid INT NOT NULL, startingDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP, id INT, Primary Key(id), Foreign Key(tid) REFERENCES Team(tid),Foreign Key(id) REFERENCES Cases(id));
您必须首先创建表Team
。Team表可能存在重复项。我认为Cases表的createtable语句应该位于顶部。我试图验证这是真的,但是myPhpAdmin被冻结了,所以我无法验证在我将CREATETABLE Case语句粘贴到顶部后错误是否消失。