我已閱讀數據庫系統概念,第6版,Silberschatz。我將在MySQL上實現第2章中有關OS X的大學數據庫系統。但是我在創建表course
時遇到了麻煩。表department
看起來像創建course
導致以下錯誤表MySQL:錯誤1215(HY000):無法添加外鍵約束
mysql> select * from department
-> ;
+------------+----------+-----------+
| dept_name | building | budget |
+------------+----------+-----------+
| Biology | Watson | 90000.00 |
| Comp. Sci. | Taylor | 100000.00 |
| Elec. Eng. | Taylor | 85000.00 |
| Finance | Painter | 120000.00 |
| History | Painter | 50000.00 |
| Music | Packard | 80000.00 |
| Physics | Watson | 70000.00 |
+------------+----------+-----------+
mysql> show columns from department
-> ;
+-----------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------------+------+-----+---------+-------+
| dept_name | varchar(20) | NO | PRI | | |
| building | varchar(15) | YES | | NULL | |
| budget | decimal(12,2) | YES | | NULL | |
+-----------+---------------+------+-----+---------+-------+
。
mysql> create table course
-> (course_id varchar(7),
-> title varchar (50),
-> dept_name varchar(20),
-> credits numeric(2,0),
-> primary key(course_id),
-> foreign key (dept_name) references department);
ERROR 1215 (HY000): Cannot add foreign key constraint
爲外鍵約束谷歌搜索後,我剛剛得知這個詞「外鍵約束」表示,從下表course
外鍵列數據必須在主鍵列存在於表department
。但是在插入數據時我應該遇到這個錯誤。
如果沒有,爲什麼作者讓我執行該SQL語句?
如果我真的執行了錯誤的SQL語句,插入一些數據後我是否必須在課程表中指定dept_name
作爲外鍵?
編輯:輸入set foreign_key_checks=0
到mysql>
不能修復錯誤。
------------------------
LATEST FOREIGN KEY ERROR
------------------------
2013-09-21 16:02:20 132cbe000 Error in foreign key constraint of table university/course:
foreign key (dept_name) references department):
Syntax error close to:
)
mysql> set foreign_key_checks=0
-> ;
Query OK, 0 rows affected (0.00 sec)
mysql> create table course
-> (course_id varchar(7),
-> title varchar(50),
-> dept_name varchar(20),
-> credits numeric(2,0),
-> primary key(course_id),
-> foreign key (dept_name) references department);
ERROR 1215 (HY000): Cannot add foreign key constraint
http://stackoverflow.com/a/15535110/242520 –
這兩個表中的所有'dept_name'都是varchar(15)。我在哪裏輸入'set foreign_key_checks = 0'? – inherithandle
在'mysql>'中鍵入'set foreign_key_checks = 0'不能解決錯誤。 – inherithandle