找不到任何問題,真正幫助我,所以繼承人另一個。添加外鍵約束
我試圖設置一個外鍵約束在一個表(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