在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声明中有语法错误

当出现错误时,仔细检查数据库表和字段的设计。我更建议大家尽量使用工具来设计和创建数据库,这样能减少出错的概率。

转载于:https://www.cnblogs.com/xkcp008/p/5687342.html

Mysql无法创建外键的原因相关推荐

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

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

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

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

  3. Mysql无法创建外键的原因汇总_查看MySQL创建外键约束失败详细原因的方法

    以下是引用片段: LATEST FOREIGN KEY ERROR -------- 081210 11:57:40 Error in foreign key constraint of table ...

  4. Mysql创建外键错误原因分析

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

  5. (转)mysql 无法设置外键的原因总结

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

  6. mysql 创建外键索引吗_索引-MySQL无法创建外键约束

    我在为mysql数据库中的现有表创建外键时遇到一些问题. 我有experiment表: +-------------+------------------+------+-----+--------- ...

  7. mysql可视化创建外键说明_关于使用可视化图形工具navicat for mysql来创建外键的步骤...

    主键:主键是一张表的唯一标识符,应该让其处于不可被外界更改状态. 且主键对于用户来说是无意义的,为了明确这一点,我们应该让主键处于一种幽魂状态,即主键存在,但其他人并不感觉到它存在. 外键:创建外键是 ...

  8. mysql 图形界面外键_关于使用可视化图形工具navicat for mysql来创建外键的步骤

    主键:主键是一张表的唯一标识符,应该让其处于不可被外界更改状态. 且主键对于用户来说是无意义的,为了明确这一点,我们应该让主键处于一种幽魂状态,即主键存在,但其他人并不感觉到它存在. 外键:创建外键是 ...

  9. MySQL无法创建外键、查询外键的属性

    MySQL存储引擎--MyISAM与InnoDB区别 - 上善若水,水善利万物而不争. - CSDN博客  http://blog.csdn.net/xifeijian/article/details ...

最新文章

  1. 基于Sobel计算图像梯度图
  2. 浅析机器视觉在安防行业的应用
  3. ggplot2绘图入门系列之二:图层控制与直方图
  4. mac 安装node_node 服务端部署
  5. 【小白学习C++ 教程】六、C++内置函数和函数传参
  6. Spring JdbcTemplate batchUpdate() 实例
  7. GeneralUpdate实现应用程序更新
  8. 抓到一只苍蝇 writeup
  9. CentOs中mysql的安装与配置
  10. 阿里云语音识别模型端核心技术选讲
  11. h265硬解码和软解码
  12. java导出可运行文件格式,|java导出excel,excel打不开,报文件格式无效,怎么解决!...
  13. 普乐蛙4d5d动感影院|VR太空旅行设备|VR带你遨游太空
  14. Telegram传奇:俄罗斯富豪、黑客高手、极权和阴谋
  15. ccna 服务器输入域名显示不出,思科为服务器设置域名
  16. 无人驾驶感知篇之融合(一)
  17. Azure China (11) 使用Azure China Storage Public Blob
  18. 画火柴人动画的手机软件_火柴人动画制作软件(Pivot Stickfigure Animator)2.25 中文版附教程...
  19. html做网页 窗口最小化后,40种网页常用小技巧
  20. 字节跳动的面试分享,为了拿下这个offer鬼知道我经历了什么

热门文章

  1. 8月份Github上最热门的Python开源项目
  2. 在eclipse中使用JDBC连接MySQL5.7.24
  3. Codeforces Round #545 B. Circus
  4. Postgresql的使用
  5. stopImmediatePropagation函数和stopPropagation函数的区别
  6. windows python MySQL-python安装过程
  7. 【POJ2409】Let it Bead Pólya定理
  8. Python全栈开发,Day1 - Python基础1
  9. hdu 2295 Radar 重复覆盖+二分
  10. 【Nginx】epoll事件驱动模块