MySQL的:为什么没有这个数据库创建脚本的工作?
-
22-09-2019 - |
题
出于某种原因,这个MySQL失败:
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;
它提供了错误:
错误1005(HY000):无法创建表
partb.dept_mgr
(错误:150)
什么可导致此?
解决方案
此命令:
SHOW ENGINE INNODB STATUS;
是你的朋友,当你有麻烦建立外键。输出(删节)
------------------------
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;
它的工作。
其他提示
您必须指定在国外表中的列(S)为重点:
FOREIGN KEY (ssn) REFERENCES Employees (ssn) ...
您只需要外键引用的表,而不是列。
尝试:引用Employee.ssn
不隶属于 StackOverflow