2010-02-25 47 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) ...