Tôi đã đọc Khái niệm hệ thống cơ sở dữ liệu, ấn bản thứ 6, Silberschatz. Tôi sẽ triển khai hệ thống cơ sở dữ liệu đại học thể hiện trong chương 2 trên OS X trên MySQL. Nhưng tôi gặp rắc rối khi tạo bảng course
. bảng department
trông giống nhưMySQL: ERROR 1215 (HY000): Không thể thêm ràng buộc khóa ngoài
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 | |
+-----------+---------------+------+-----+---------+-------+
Tạo bảng course
gây lỗi sau.
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
sau khi tìm kiếm google cho ràng buộc khoá ngoại, tôi đã chỉ biết được rằng từ 'chính hạn chế nước ngoài chỉ ra rằng dữ liệu từ cột khóa ngoại trong bảng course
phải tồn tại trong cột khóa chính trong bảng department
. Nhưng tôi phải gặp lỗi này khi chèn dữ liệu.
Nếu không, tại sao tác giả làm cho tôi thực thi câu lệnh SQL đó?
Nếu tôi thực sự thực thi câu lệnh SQL sai, tôi có phải chỉ định dept_name
trong bảng khóa học làm khóa ngoài sau khi chèn một số dữ liệu không?
EDIT: gõ set foreign_key_checks=0
vào mysql>
không khắc phục lỗi.
------------------------
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 –
tất cả 'dept_name' trong cả hai bảng là varchar (15). Tôi có phải gõ 'set foreign_key_checks = 0' không? – inherithandle
nhập 'set foreign_key_checks = 0' vào' mysql> 'không sửa lỗi. – inherithandle