MySQL 外键语法错误

标签 mysql sql

CREATE TABLE DEPARTMENT ( Dname VARCHAR(15) NOT NULL, 
Dnumber INT NOT NULL, 
Mgr_ssn CHAR(9) NOT NULL,
 Mgr_start_Date DATE, 
PRIMARY KEY(Dnumber), 
UNIQUE(Dname), 
FOREIGN KEY(Mgr_ssn) REFERENCES EMPLOYEE (Ssn) 
ON DELETE SET DEFAULT ON UPDATE CASCADE);

我是 MySQL 的初学者。上面的命令给了我这个:

Cannot add foreign key constraint

我已经尝试过SHOW ENGINE INNODB STATUS; 我检查了 EMPLOYEE.Ssn 的数据类型。 请帮忙。

编辑:我的 EMPLOYEE 表

| employee | CREATE TABLE `employee` (
  `Fname` varchar(10) DEFAULT NULL,
  `Minit` char(1) DEFAULT NULL,
  `Lname` varchar(10) DEFAULT NULL,
  `Ssn` char(9) NOT NULL,
  `Bdate` date DEFAULT NULL,
  `Address` varchar(40) DEFAULT NULL,
  `Sex` char(1) DEFAULT NULL,
  `Salary` int(11) DEFAULT NULL,
  `Super_ssn` char(9) DEFAULT NULL,
  `Dno` int(11) DEFAULT NULL,
  PRIMARY KEY (`Ssn`),
  KEY `Super_ssn` (`Super_ssn`),
  CONSTRAINT `employee_ibfk_1` FOREIGN KEY (`Super_ssn`) REFERENCES `EMPLOYEE` (`Ssn`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |

最佳答案

根据 MySQL 文档 https://dev.mysql.com/doc/refman/5.7/en/create-table-foreign-keys.html ,您不能将 SET DEFAULT 与 INNODB 一起使用:

SET DEFAULT:MySQL 解析器可以识别此操作,但 InnoDB 和 NDB 都拒绝包含 ON DELETE SET DEFAULT 或 ON UPDATE SET DEFAULT 子句的表定义

关于MySQL 外键语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43336072/

相关文章:

sql - 如何通过 T-SQL 在 SQL Server 2008 中创建计划作业?

mysql - 从 MS-SQL Server 查询转换为 MySQL 和 DATEDIFF()

sql - 创建不可为空的列,但使用某个给定值填充现有的 NULL

mysql - webapi - 数据库迁移

php artisan 迁移错误 PDOEXception 访问被拒绝 laravel 5

php - 如何更改不同商店 View 的 URL Key - Magento 1.7.0.2

mysql - 如何在一列SQL中存储多个值

php - MySQL 将 NULL 值插入 INT 列

sql - 将 ASP.NET Core 应用程序发布到 Azure 不起作用

php - 从数据库中检索具有特定 ID 的所有帖子