2013-04-29 92 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