今天写开发文档的时候需要做一下数据结构相关的内容,于是就想着一个快捷一点儿的操作,直接在DataGrip里面调用视图,然后将视图打印为PDF,这样就可以直接截图获取到图片了。由于开发的过程中也没有怎么注重外键的建立,因为本来就是一个小小的比赛,所以生成视图的时候外键联系的箭头都没有,真的是自闭了,如果这个直接给评委看,评委估计会气哭。。。所以我打算花点时间加一些外键上去,心里想着也花不了多少时间,谁知道,这下子还遇到一些哲学问题!

首先看下,本来数据库表视图是这样的,我只是想多增加一些外键约束,让它看起来更加的专业一点儿,而不是一个像小学生做的数据库似的。

接下来设置外键的过程(park_detail中的scenic_id是外键,scenic_info中的scenic_id是主键)就很牛逼了,直接就遇到了这样的提示:

[HY000][3780] Referencing column ‘scenic_id‘ and referenced column ‘scenic_id‘ in foreign key constraint ‘park_detail_scenic_info_scenic_id_fk‘ are incompatible.

这个问题出现的时候,我发动我四级英文阅读能力(好吧其实六级也过了,只是六级擦边。。),可以看出MySQL提示外键与引用的列不兼容。我想的是可能park_detail中的scenic_id没有带有非空约束,而scenic_info中的scenic_id是肯定有非空约束的,所以聪明的我又去查看了它们两个数据项的约束条件是否一致。

下面两幅图分别是这两个数据项的约束条件,可以看出都是设置了非空约束,但就是不能成功的设置外键,我已经抓狂了快。

我直接把整个错误copy到百度,看到有人说有可能是字符集的问题,这句话点醒了我,所以我用MySQL的mysqldump工具把这两个表导出到了桌面

然后去观察这两个sql文件内是怎么对字符集编码进行规定的

可以看出来,这两个表内的字符集规定并不是完全一样,那么接下来就以scenic_info这个表作为基准,去更改park_detail的字符集问题。

ALTER TABLE park_detail CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;

上面的代码是更改的表结构的编码,也可以自己写代码直接更改字段的编码,不过我还没有试,此类更改字符集的教程也是比较的多。

列举几个比较常用的:

修改已存在列的collate属性,需要使用下面的语法

alter table tbl_name MODIFY col_name column_definition CHARACTER SET [=] charset_name | [DEFAULT] COLLATE [=] collation_name

修改表的默认字符集

ALTER TABLE tbl_name DEFAULT CHARACTER SET character_name [COLLATE…];

把表的默认字符集和所有的字符列都更改为新的字符集

ALTER TABLE logtest CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

修改字段的字符集

ALTER TABLE tbl_name CHANGE c_name c_name CHARACTER SET character_name [COLLATE …];

如果创建数据库的时候没有进行指定,以系统自己的字符设置为准,这里说的系统是运行的MySQL,估计是因为我的电脑重装了,导致前后两次备份的数据库内字符集就变混乱了,不过现在掌握了怎么更改字符集,还怕什么?下面就是我更改成功之后,添加了外键的效果

不一定只有系统遇到外键错误时才会报错[HY000][3780],有可能同样是因为字符集不一样的问题报这个错误。

3780mysql_MySQL添加外键Foreign Keys出错,报错[HY000][3780]相关推荐

  1. 数据库添加外键报1061错误

    今天建数据库添加外键的时候一直报1061的错误,百度了说什么内存不足,后面我发现是约束名冲突,然后修改了约束名就创建索引成功了!

  2. 关于mysql添加外键的时候报错_MySQL添加外键时报错:1215 Cannot add the foreign key constraint的一个可能解决方法...

    今天给设计好的班级表和专业表以及院系表添加外键时,报了这样一个错误 ** 1215 Cannot add the foreign key constraint ** 去百度搜了一圈,说可能时因为字段类 ...

  3. mysql 外键报错_MySQL添加外键、删除外键方式,MySQL删除外键报错快速解决方案...

    外键的作用主要在于对各类表单进行约束,避免出现冗余数据及超出数据.那么,MySQL如何添加与删除外键?添加删除外键时报错是什么原因? 本文将从创建MySQL表单时添加外键.给已存在表单添加外键.删除外 ...

  4. Navicat cannot add foreign key constraint或者添加外键后不显示

    首先我们要明确不能添加外键的原因有很多种,我遇到的也只是其中一种在这里分享出来.如果能帮到大家就再好不过了. 右键->设计表. 检查你的数据库引擎是什么, 因为我建的表数据库默认引擎是MyISA ...

  5. mysql alter table add foreign key_mysql alter table add foreign (errno: 150)添加外键150错误

    在原有的users 表和orders表上,为orders添加外键alter table tbl_order add foreign key fk_user_id(user_id) references ...

  6. oracle 添加外键,报“未找到父项关键字”

    添加外键约束时报"无法验证FK_ADMIN_PAGE_SUBMODULE,未找到父项关键字",  终于找到原因了.  主要看两表中的数据是否一致,从表中要关联外键的字段中的数据必须 ...

  7. mysql006添加外键约束

    -- 添加外键 -- 建立主表,班级表 CREATE TABLE class( cno int PRIMARY key auto_increment, cname VARCHAR(55) ) SELE ...

  8. mysql用命令修改主键名_MySQL的常用命令:添加外键,修改字段名称,增加字段 设置主键自增长等...

    Mysql命令添加外键 前提是有这么几个表   以mall_product 和 mall_category为例 ALTER TABLE mall_product ADD CONSTRAINT fore ...

  9. Mysql中的外键分析(什么是外键,为什么要用外键,添加外键,主外键关联删除)

    有一个东西一直在我脑海中是个很烦的东西,但是这东西不搞清楚会阻碍自己的前进.自己做项目demo永远只能用一张表... 所以今天还是学习了下外键希望能够搞明白一些... 百度上搜索外键的作用" ...

最新文章

  1. Java axis 配置host_Java AxisProperties类代码示例
  2. linux arch 软件管理工具 pacman 简介
  3. vs2017开发php,C#编写的可供PHP调用的com dll(Visual studio 2017)
  4. 帝国理工大学2021-22电气与电子工程系应用机器学习硕士课程大纲
  5. 骁龙660_高通骁龙660可以带动6g运行内存吗?
  6. 用户画像_什么是“用户画像”?如何利用用户画像进行精准营销?
  7. linux子系统停止运行,linux 系统部署spring boot 退出连接端后项目停止运行问题
  8. AE插件Aura Rowbyte Aura for Mac(AE几何粒子渲染效果插件)
  9. PHP面试题:HTTP中POST、GET、PUT、DELETE方式的区别
  10. 数据库基础(1)关系的布尔运算:数据集的并,交,差,补和有效补运算
  11. GNS3模拟思科三层交换机(排错细节)
  12. 2014年上半年计算机试题,2014年上半年程序员考试上午试题及答案
  13. IPX9K IP69K:ISO 20653:2006
  14. 人人都能看懂的量子力学——波动力学的建立过程
  15. python3解压zip_python3:rar解压缩
  16. Linux pwn入门教程,Linux PWN从入门到熟练
  17. 软件开发中,做产品与做项目有什么区别?
  18. java读取带格式word文档_Java读取word文档解决方案
  19. 润盈益通保本型理财产品优势
  20. 你需要知道的8种数据结构

热门文章

  1. python中使用squarify包可视化treemap图:treemap将分层数据显示为一组嵌套矩形,每一组都用一个矩形表示,该矩形的面积与其值成正比
  2. R语言ggplot2可视化:使用geom_smooth函数基于lm方法为每个分组的部分数据(subset data)拟合趋势关系曲线、对指定范围的数据拟合曲线
  3. R语言使用edit函数在Rsudio中生成数据编辑器(在windows中生成编辑器)、在编辑器中输出需要的数据生成最终的dataframe
  4. pandas生成新的累加数据列、pandas生成新的累加数据列(数据列中包含NaN的情况)、pandas计算整个dataframe的所有数据列的累加
  5. R语言format函数保留几位小数实战
  6. 随机森林中的Bootstrap抽样是有放回抽样么?Bootstrap抽样过程描述一下
  7. (DCA)Decision Curve Analysis画图及意义
  8. java性能保障技术_狙击P7!阿里大佬亲授“Java性能调优技术宝典”,太完整了!...
  9. 单细胞RNA降维之UMAP
  10. 纳米孔(Oxford Nanopore)测序仪的学习笔记