2013-04-29 100 views
0

我目前使用phpmyadmin来创建许多不同的表,但这一个似乎是造成问题。这可能是这部分代码的错误,或者可能来自于我的代码中进一步引用Staff的内容?SQL创建表 - 错误

SQL query: 

CREATE TABLE Staff(

Staff_ID INTEGER(5) PRIMARY KEY AUTO_INCREMENT , 
Local_ID INTEGER(5) , 
First_name VARCHAR(20) NOT NULL , 
Last_name VARCHAR(20) NOT NULL , 
Address_line_1 VARCHAR(30) NOT NULL , 
Address_line_2 VARCHAR(30) NOT NULL , 
City VARCHAR(20) NOT NULL , 
Post_Code VARCHAR(8) NOT NULL , 
Email VARCHAR(30) NOT NULL , 
Telephone INTEGER NOT NULL , 
Date_employed DATE, 
Salary DECIMAL, 
Sales_ID INTEGER(5) , 
Manager_ID INTEGER(5) , 
Development_ID INTEGER(5) , 
FOREIGN KEY (Local_ID) REFERENCES LocalOffice(Local_ID) , 
FOREIGN KEY (Sales_ID) REFERENCES Sales_Advisors(Sales_ID) , 
FOREIGN KEY (Manager_ID) REFERENCES Site_Manager(Manager_ID) , 
FOREIGN KEY (Development_ID) REFERENCES Development(Development_ID) 
); 

MySQL表示:

1005 - 无法创建表 'h_h.staff'(错误:150)(详细资料...)

+2

显示完整的错误。 – 2013-04-29 06:25:42

+0

这段代码正在处理我的mysql吗?你怎么了?请显示错误。 – 2013-04-29 06:27:02

+0

使用PHPMYADMIN - 这是完全错误。 – 2013-04-29 06:27:13

回答

2

从错误,这是非常清楚,这个错误是由于外键约束。你可以尝试禁用外键约束,然后创建你的表,并最终启用它?

SET foreign_key_checks = 0; 

CREATE TABLE Staff(

Staff_ID INTEGER(5) PRIMARY KEY AUTO_INCREMENT , 
Local_ID INTEGER(5) , 
First_name VARCHAR(20) NOT NULL , 
Last_name VARCHAR(20) NOT NULL , 
Address_line_1 VARCHAR(30) NOT NULL , 
Address_line_2 VARCHAR(30) NOT NULL , 
City VARCHAR(20) NOT NULL , 
Post_Code VARCHAR(8) NOT NULL , 
Email VARCHAR(30) NOT NULL , 
Telephone INTEGER NOT NULL , 
Date_employed DATE, 
Salary DECIMAL, 
Sales_ID INTEGER(5) , 
Manager_ID INTEGER(5) , 
Development_ID INTEGER(5) , 
FOREIGN KEY (Local_ID) REFERENCES LocalOffice(Local_ID) , 
FOREIGN KEY (Sales_ID) REFERENCES Sales_Advisors(Sales_ID) , 
FOREIGN KEY (Manager_ID) REFERENCES Site_Manager(Manager_ID) , 
FOREIGN KEY (Development_ID) REFERENCES Development(Development_ID) 
); 

SET foreign_key_checks = 1; 
+0

虽然这可能会引起多少问题呢? – 2013-04-29 06:51:11

+0

@LukeClifford请参阅http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_foreign_key_checks – Sean 2013-04-29 07:03:52

+0

怎么样:这似乎工作:'INSERT INTO Staff VALUES(null,null ,'Sean','D','[email protected]','07411557877','2012-10-08',80000.00,null,null,null);' – 2013-04-29 07:15:04

0

我想你应该创建这样的外键索引

... 

Development_ID INTEGER(5) , 
INDEX Local_ID, 
INDEX Sales_ID, 
INDEX Manager_ID, 
INDEX DEvelopment_ID, 
FOREIGN KEY (Local_ID) REFERENCES LocalOffice(Local_ID) , 
FOREIGN KEY (Sales_ID) REFERENCES Sales_Advisors(Sales_ID) , 
FOREIGN KEY (Manager_ID) REFERENCES Site_Manager(Manager_ID) , 
FOREIGN KEY (Development_ID) REFERENCES Development(Development_ID) 
); 
+0

但是到目前为止,情况并非如此。 – 2013-04-29 06:44:22

+0

我认为在你定义外键之前,你应该为它编制索引。这是原因,表不是创建的。 – Amir 2013-04-29 06:47:43