找不到任何问题,真正帮助我,所以继承人另一个。添加外键约束
我试图设置一个外键约束在一个表(dempartment)上,并将其链接到表(employee)上的主键列上的员工被称为(dno),并在部门上调用(dnumber)。这两个字段是相同的类型,但我不断收到
mysql> alter table department
-> add foreign key (dnumber)
-> references employee (dno);
ERROR 1005 (HY000): Can't create table 'dba110.#sql-938_3' (errno: 150)
有什么建议吗?
UPDATE: 所以我想看看我的DNO和dnumber列带符号。
mysql> show create table employee;
+----------+-------------------------------------------
-------------------------------------------------------
-------------------------------------------------------
| Table | Create Table
+----------+-------------------------------------------
-------------------------------------------------------
-------------------------------------------------------
| employee | CREATE TABLE `employee` (
`Fname` varchar(8) DEFAULT NULL,
`Minit` varchar(2) DEFAULT NULL,
`Lname` varchar(8) DEFAULT NULL,
`SSN` varchar(9) NOT NULL,
`Bdate` date DEFAULT NULL,
`Address` varchar(27) DEFAULT NULL,
`Sex` varchar(1) DEFAULT NULL,
`Salary` float NOT NULL,
`Superssn` varchar(9) DEFAULT NULL,
`Dno` int(1) NOT NULL,
PRIMARY KEY (`SSN`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+----------+-------------------------------------------
-------------------------------------------------------
-------------------------------------------------------
1 row in set (0.00 sec)
mysql> show create table department;
+------------+-----------------------------------------
-------------------------------------+
| Table | Create Table
|
+------------+-----------------------------------------
-------------------------------------+
| department | CREATE TABLE `department` (
`dnumber` int(1) NOT NULL,
`dname` varchar(15) DEFAULT NULL,
`mgrssn` varchar(9) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+------------+-----------------------------------------
-------------------------------------+
1 row in set (0.00 sec)
你有EMPLOYEE表之前创建的部门表? :-) – bonCodigo
根据您的问题的更新,为什么你的错误很明显。您的表格设计是正确的,只需要将创建两个表格的执行顺序与员工表中的外键引用交换即可。或者做更改员工,而不是部门。 Coz一个部门可以有很多员工。 – bonCodigo
任何机会,你可以给我的代码。因为我认为我已经尝试了两种方式。一种方法给了我错误1072和另一种方式,你谈论给我: 错误1005(HY000):无法创建表'dba110。#sql-938_3'(错误:150) – SkyVar