2010-02-25 97 views
1

出於某種原因,這個MySQL失敗:MySQL:爲什麼這個db創建腳本不起作用?

CREATE SCHEMA IF NOT EXISTS `partB` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ; 
USE `partB`; 

CREATE TABLE Employees (ssn CHAR(11), 
Name CHAR(30), 
mlot INTEGER, 
PRIMARY KEY(ssn)) 
ENGINE = InnoDB; 

CREATE TABLE Dept_Mgr (did INTEGER, 
dname CHAR(20), 
ssn CHAR(11) NOT NULL, 
PRIMARY KEY (did), 
FOREIGN KEY (ssn) REFERENCES Employees 
ON DELETE NO ACTION) 
ENGINE = InnoDB; 

它給人的錯誤:

ERROR 1005 (HY000): Can't create table partb.dept_mgr (errno: 150)

什麼可導致此?

+0

嗨Rosarch,是這樣的回答讓您滿意? – 2010-02-26 09:37:07

回答

1

此命令引用。輸出(有刪節)

------------------------ 
LATEST FOREIGN KEY ERROR 
------------------------ 
100225 2:51:42 Error in foreign key constraint of table test/dept_mgr: 
FOREIGN KEY (ssn) REFERENCES Employees 
ON DELETE NO ACTION) 
ENGINE = InnoDB: 
Syntax error close to: 

ON DELETE NO ACTION) 
ENGINE = InnoDB 

如果你改變你的語句:

CREATE TABLE Dept_Mgr ( 
    did INTEGER, 
    dname CHAR(20), 
    ssn CHAR(11) NOT NULL, 
    PRIMARY KEY (did), 
    FOREIGN KEY (ssn) REFERENCES Employees(ssn) 
) engine = innodb; 

它的工作。

0

您只有外鍵引用表,而不是列。

嘗試:

SHOW ENGINE INNODB STATUS; 

是你的朋友,當你有麻煩建立外鍵:Employee.ssn

2

你必須爲關鍵指定的外國表中的列(S):

FOREIGN KEY (ssn) REFERENCES Employees (ssn) ...