mysql 1215错误——外键建立失败
2016-11-16 11:30
429 查看
在Mysql中创建数据表时,经常会遇到问题而失败,其中建立外键有很多细节需要我们去留意,主要有以下几种常见原因。
1. 两个字段的类型或者大小不严格匹配。例如,如果一个是int(10),那么外键也必须设置成int(10),而不是int(11),也不能是tinyint。另外,你还必须确定两个字段是否都为signed或者unsigned,这两字段必须严格地一致匹配。
2. 设置外键的字段没有建立起索引,或者不是一个primary key(主键)。一般,需要建立外键的数据表称为子表,而相关联的数据表称为父表。建立外键时所对应的父表的字段必须要创建索引primary key。
3. 其中一个或者两个表是MyISAM引擎的表。若想要使用外键约束,表必须是InnoDB引擎(实际上,如果两个表都是MyISAM 引擎的,这个错误根本不会发生,但也不会产生外键,只会建立索引)你需要检查表的引擎类型。
4. 外键的名字不能重复。检查该数据库确保外健名字是唯一的,或者你可以在键名后面加上几个随机的字符以测试是否为此原因。
5. 设置了ON DELETE SET NULL,但是相关的键的字段设置成了NOT NULL值。通过修改外键的属性值或者把字段属性设置成allow null来解决。
6. 确保你的Charset和Collate选项在表级和字段级上的一致。
7. 两字段设置的默认值不一致。一个字段设置default为0,一个设置default为null,也是不可行的。
8. ALTER声明中有语法错误
当出现错误时,仔细检查数据库表和字段的设计。我更建议大家尽量使用工具来设计和创建数据库,这样能减少出错的概率。
1. 两个字段的类型或者大小不严格匹配。例如,如果一个是int(10),那么外键也必须设置成int(10),而不是int(11),也不能是tinyint。另外,你还必须确定两个字段是否都为signed或者unsigned,这两字段必须严格地一致匹配。
2. 设置外键的字段没有建立起索引,或者不是一个primary key(主键)。一般,需要建立外键的数据表称为子表,而相关联的数据表称为父表。建立外键时所对应的父表的字段必须要创建索引primary key。
3. 其中一个或者两个表是MyISAM引擎的表。若想要使用外键约束,表必须是InnoDB引擎(实际上,如果两个表都是MyISAM 引擎的,这个错误根本不会发生,但也不会产生外键,只会建立索引)你需要检查表的引擎类型。
4. 外键的名字不能重复。检查该数据库确保外健名字是唯一的,或者你可以在键名后面加上几个随机的字符以测试是否为此原因。
5. 设置了ON DELETE SET NULL,但是相关的键的字段设置成了NOT NULL值。通过修改外键的属性值或者把字段属性设置成allow null来解决。
6. 确保你的Charset和Collate选项在表级和字段级上的一致。
7. 两字段设置的默认值不一致。一个字段设置default为0,一个设置default为null,也是不可行的。
8. ALTER声明中有语法错误
当出现错误时,仔细检查数据库表和字段的设计。我更建议大家尽量使用工具来设计和创建数据库,这样能减少出错的概率。
相关文章推荐
- MySQL中创建外键的错误:1215 Cannot add the foreign key constraint
- 关于MySQL的外键创建的1215错误
- MYSQL建立外键失败几种情况记录Can't create table不能创建表
- mysql建表语句以及添加外键报1215错误
- mysql 建立外键错误(mysql error number 1005 errno: 150)
- 关于Mysql建外键报1215错误
- MySQL 关于建立外键失败的问题
- MYSQL建立外键失败几种情况记录Can’t create table。。。。
- MySQL创建外键失败,错误信息1005
- MySQL 外键建立错误
- MYSQL建立外键失败几种情况记录Can't create table不能创建表
- MYSQL建立外键失败几种情况记录Can’t create table...
- 【原】+【转】MYSQL建立外键失败几种情况记录
- MYSQL 建立外键关联错误
- MySQL:错误代码1215 无法添加外键约束的解决思路
- mysql errno: 150 错误 外键
- MySQL外键 Cannot add or update a child row错误的实例解释
- 黄聪:MYSQL远程连接失败:ERROR 1130: mysql 1130连接错误的有效解決方法
- SQL 2005服务启动失败(在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误)
- MySQL外键 Cannot add or update a child row错误的实例解释