在Mysql中创建外键时,经常会遇到问题而失败,这是因为Mysql中还有很多细节需要我们去留意,我自己总结并查阅资料后列出了以下几种常见原因。

1.  两个字段的类型或者大小不严格匹配。例如,如果一个是int(10),那么外键也必须设置成int(10),而不是int(11),也不能是tinyint。另外,你还必须确定两个字段是否一个为 signed,而另一个又是unsigned(即:无符号),这两字段必须严格地一致匹配,更多关于signed和unsigned的信息,请参阅:http://www.verysimple.com/blog/?p=57

2. 试图设置外键的字段没有建立起索引,或者不是一个primary key(主键)。如果其中一个不是primary key的话,你必须先为它创建一个索引。

3. 其中一个或者两个表是MyISAM引擎的表。若想要使用外键约束,表必须是InnoDB引擎(实际上,如果两个表都是MyISAM 引擎的,这个错误根本不会发生,但也不会产生外键,只会建立索引)你需要检查表的引擎类型。

4. 外键的名字不能重复。你应该检查你的数据库以确保外健名字是唯一的,或者你在键名后面加上几个随机的字符以测试是否是这个原因。

5. 你可能设置了ON DELETE SET NULL,但是相关的键的字段又设置成了NOTS NULL值。你可能通过修改cascade的属性值或者把字段属性设置成allow null来解决。

6. 请确定你的Charset和Collate选项在表级和字段级上的一致。

7. 你可能设置为外键设置了一个默认值,如default=0。

8. ALTER声明中有语法错误

原文地址:http://blog.csdn.net/wangpeng047/article/details/19624351

转载于:https://www.cnblogs.com/earendil/p/4040994.html

(转)mysql 无法设置外键的原因总结相关推荐

  1. Mysql无法创建外键的原因

    在Mysql中创建外键时,经常会遇到问题而失败,这是因为Mysql中还有很多细节需要我们去留意,我自己总结并查阅资料后列出了以下几种常见原因. 1.  两个字段的类型或者大小不严格匹配.例如,如果一个 ...

  2. mysql setnull_1、Mysql无法创建外键的原因 2、MySql 外键约束 之CASCADE、SET NULL、RESTRICT、NO ACTION分析和作用...

    在Mysql中创建外键时,经常会遇到问题而失败,这是因为Mysql中还有很多细节需要我们去留意,我自己总结并查阅资料后列出了以下几种常见原因. 1.  两个字段的类型或者大小不严格匹配.例如,如果一个 ...

  3. Mysql学习总结(19)——Mysql无法创建外键的原因

    在MySQL中创建外键时,经常会遇到问题而失败,这是因为Mysql中还有很多细节需要我们去留意,我自己总结并查阅资料后列出了以下几种常见原因. 1.  两个字段的类型或者大小不严格匹配.例如,如果一个 ...

  4. mysql数据库设置外键失效【仅仅推荐测试库】

    MYSQL在进行数据删除时,由于有外键不能进行修改和删除. 解决办法:可以设置外键失效.删除完之后,开启外键约束 1.查看外键约束 SELECT@@foreign_key_checks; 2.设置外键 ...

  5. mysql外键约束脚本_如何在MySQL中设置外键约束

    (1) 外键的使用: 外键的作用,主要有两个: 一个是让数据库自己通过外键来保证数据的完整性和一致性 一个就是能够增加ER图的可读性 有些人认为外键的建立会给开发时操作数据库带来很大的麻烦.因为数据库 ...

  6. 如何在MySQL中设置外键约束

    MySql外键设置详解 (1) 外键的使用: 外键的作用,主要有两个:     一个是让数据库自己通过外键来保证数据的完整性和一致性     一个就是能够增加ER图的可读性     有些人认为外键的建 ...

  7. 在mysql中如何添加外键约束_如何在MySQL中设置外键约束

    (1) 外键的使用: 外键的作用,主要有两个: 一个是让数据库自己通过外键来保证数据的完整性和一致性 一个就是能够增加ER图的可读性 有些人认为外键的建立会给开发时操作数据库带来很大的麻烦.因为数据库 ...

  8. 如何在MySQL中设置外键约束以及外键的作用

    1.外键的作用,主要有两个:     一个是让数据库自己通过外键来保证数据的完整性和一致性     一个就是能够增加ER图的可读性 2.外键的配置 1)先创建一个主表,代码如下: #创建表studen ...

  9. mysql外键约束的作用_如何在MySQL中设置外键约束以及外键的作用

    1.外键的作用,主要有两个: 一个是让数据库自己通过外键来保证数据的完整性和一致性 一个就是能够增加ER图的可读性 2.外键的配置 1)先创建一个主表,代码如下: #创建表student,并添加各种约 ...

最新文章

  1. 对IsUnderPostmaster变量初步学习
  2. javascript简介及基本语法
  3. WannaCry警示:学会检测和减轻云端恶意内容
  4. Python List:合并多个list,listd的合并
  5. scm中mysql作用_scm项目问题
  6. vsftpd的简单安装和配置(只有三步)
  7. 【SpringBoot 】SpringBoot注解详解
  8. 华为京东联手,火拼小米生态链!
  9. Docker搭建nexus3私服
  10. 风物长宜放眼量,人间正道是沧桑 - 一位北美 IT 技术人破局
  11. vbnet 判断字符串是否为空或空白
  12. 计算机word插图教案,《在Word中插入图片》优秀教学设计范文
  13. python-opencv:在视频中显示fps等opencv快速入门
  14. 树莓派获取root权限
  15. E-R图(实体-联系图)
  16. app store 注册账号生成证书上传app完整的教程
  17. 像哆啦A梦懂大雄一样懂客户,我们也会拥有百宝箱
  18. 关于我所能改的常用软件的背景图片
  19. GRE隧道配置实验(OSPF)
  20. STM32 F767控制舵机

热门文章

  1. 如何在shell中执行 字符串拼接起来的命令 cmd = ls / 执行方法:$cmd
  2. python进阶18正则表达式
  3. anaconda 清华源挂了 怎么办 上交源ok
  4. 案例学习BlazeDS+Spring之六InSync04打开多个联系人
  5. 方舟服务器端口协议,《方舟:生存进化》正版开服端口映射教程及后台命令一览...
  6. python代码覆盖率测试_Python代码覆盖率分析工具----Coverage
  7. vue添加弹出框数据绑定
  8. python 导入包 导入模块
  9. Java如何将Ftp文件解压_ftp解压工具,ftp解压工具在java环境下配置其连接
  10. cjson 对象是json数组型结构体_C语言cJSON库的使用,解析json数据格式