更改mysql引擎后无法建立外键(navicat)

摘要:
所以重新更改一下字段信息,即变成由innodb创立的了。目前只在navicat中出现这种情况,未在cmd中试验。也仅在创建外键时会出错。具体原因也只是猜测,尚不明确出错机制

当我们使用navicat添加外键时,提示如下错误

更改mysql引擎后无法建立外键(navicat)第1张

首先考虑以下原因:

1:两个字段的数据类型和长度不匹配:例如一个是int一个是bigint

2:外键所参考的字段必须为主键

3:要设置外键的字段不能为主键

4:mysql表的引擎必须得是innodb(因为mysql默认引擎为MyISAM,但如果是这种情况的话,navicat不会报错,只会默默建立索引而不建立外键)

这些原因都排查完后,发现是引擎的问题,遂将引擎更改为innodb,但此时仍然无法建立外键,报错 1215 :cannot add foreign constraint

注意:此时应将要建立的外键所涉及的字段重新输入一遍

比如:blog_id和blog表下的id建立外键,都是int 10 类型的

此时要将他们都先改成其他的,varchar 15之类的(随意改,只要跟原来不一样就行)

再改回去 int 10

再次尝试建立外键 ,即可添加成功

更改mysql引擎后无法建立外键(navicat)第2张

改成

更改mysql引擎后无法建立外键(navicat)第3张

再改回来

更改mysql引擎后无法建立外键(navicat)第4张

即可

合理推测是原来的字段数据是由MyISAM引擎创立的,更改了引擎后再建立外键会出错。所以重新更改一下字段信息,即变成由innodb创立的了。

目前只在navicat中出现这种情况,未在cmd中试验。也仅在创建外键时会出错。具体原因也只是猜测,尚不明确出错机制

免责声明:文章转载自《更改mysql引擎后无法建立外键(navicat)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[JavaCore] 微信手机浏览器版本判断poj1200-Crazy Search(hash入门经典)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

mysql默认安装目录说明

MySQL安装完成后不象SQLServer默认安装在一个目录,它的数据库文件、配置文件和命令文件分别在不同的目录,了解这些目录非常重要,尤其对于Linux的初学者,因为Linux本身的目录结构就比较复杂,如果搞不清楚MySQL的安装目录那就无从谈起深入学习。 下面就介绍一下这几个目录。1、数据库目录/var/lib/mysql/2、配置文件/usr/sha...

MySQL数据库接口的VC实现与应用

摘要:MySQL数据库作为一种网络数据库性能十分出色,但其在应用软件中使用较少。本文将主要探讨MySQL提供的两种数据库接口 ——(ODBC API和C API)在VC中的应用,并且形成一个类用以封装C API数据库接口的功能。 关键词:MySQL;数据库接口;ODBC API;C API下载本文配套源代码 引言 随着现代计算机软硬件及网络技术的发展,在...

ubuntu 安装mysql5.7

一、Windows mysql5.6 解压版 安装 关于widnows平台上的安装教程,可参考百度经验: 链接:https://jingyan.baidu.com/article/f3ad7d0ffc061a09c3345bf0.html 二、Ubuntu(本人用的deepin)安装 步骤1 - 安装MySql $ sudo apt-get updat...

Linux配置Mysql的主备搭建

前提声明:linux为redhat7.5,mysql为5.7.33      主机IP(Master):192.168.122.131         从机IP(Slave):192.168.122.132 mysql安装包链接和操作文档: 链接:https://pan.baidu.com/s/1dJX2NZ0Gc8fn_BQIRS8aSQ提取码:1234...

MySQL Access denied for user root@localhost 解决方法

今天把本地开发的项目(ThinkPHP 3.2.3)移到虚拟机上(CentOS 6.6,LNMP 1.2,MySQL 5.6.23),配置好 MySQL 之后访问首页,出现: 此时 MySQL 的用户名和密码都是 root 解决方法是: # /etc/init.d/mysql stop # mysqld_safe --user=mysql --skip...

10种 分布式ID生成方式(新增MongoDB的ObjectId)

一、为什么要用分布式ID? 在说分布式ID的具体实现之前,我们来简单分析一下为什么用分布式ID?分布式ID应该满足哪些特征? 1、什么是分布式ID? 拿MySQL数据库举个栗子: 在我们业务数据量不大的时候,单库单表完全可以支撑现有业务,数据再大一点搞个MySQL主从同步读写分离也能对付。 但随着数据日渐增长,主从同步也扛不住了,就需要对数据库进行分库分表...