MySQL:ERROR 1215(HY000):无法添加外键约束
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL:ERROR 1215(HY000):无法添加外键约束,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2642字,纯文字阅读大概需要4分钟。
内容图文
![MySQL:ERROR 1215(HY000):无法添加外键约束](/upload/InfoBanner/zyjiaocheng/890/e8a414ada5d2487cb614d4c29ef63b95.jpg)
我读过数据库系统概念,第6版,Silberschatz.我将在MySQL的OS X上实现第2章中所示的大学数据库系统.但是我在创建表课程时遇到了麻烦.表部门看起来像
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
在搜索谷歌的外键约束后,我刚刚得知“外键约束”这个词表示表课程中外键列的数据必须存在于表部门的主键列中.但是在插入数据时我应该遇到这个错误.
如果没有,为什么作者让我执行那个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
解决方法:
FOREIGN KEY for CREATE TABLE的语法结构如下:
FOREIGN KEY (index_col_name)
REFERENCES table_name (index_col_name,...)
所以你的MySQL DDL应该是:
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 (dept_name)
);
另外,在department表中dept_name应该是VARCHAR(20)
更多信息可以在MySQL documentation中找到
内容总结
以上是互联网集市为您收集整理的MySQL:ERROR 1215(HY000):无法添加外键约束全部内容,希望文章能够帮你解决MySQL:ERROR 1215(HY000):无法添加外键约束所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。