MySQL添加外键Foreign Keys出错,报错[HY000][3780]
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL添加外键Foreign Keys出错,报错[HY000][3780],小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2192字,纯文字阅读大概需要4分钟。
内容图文
![MySQL添加外键Foreign Keys出错,报错[HY000][3780]](/upload/InfoBanner/zyjiaocheng/522/4dd7420e1a9c4ae58ba1614a8d3f6713.jpg)
这个问题出现的时候,我发动我四级英文阅读能力(好吧其实六级也过了,只是六级擦边。。),可以看出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],有可能同样是因为字符集不一样的问题报这个错误。
MySQL添加外键Foreign Keys出错,报错[HY000][3780]
标签:class 报错 col 调用 使用 时间 表视图 出错 字符
本文系统来源:https://www.cnblogs.com/mirage-mc/p/12627148.html
内容总结
以上是互联网集市为您收集整理的MySQL添加外键Foreign Keys出错,报错[HY000][3780]全部内容,希望文章能够帮你解决MySQL添加外键Foreign Keys出错,报错[HY000][3780]所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。