MySQL8.0.37使用过程中返回的两个错误(Error Code: 3780和Communications link failure)

文章目录

  • 小结
  • 问题及解决
    • [Error Code: 3780. Referencing column 'xxx' and referenced column 'xxx' in foreign key constraint 'zzz' are incompatible](#Error Code: 3780. Referencing column 'xxx' and referenced column 'xxx' in foreign key constraint 'zzz' are incompatible)
    • [com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure](#com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure)
  • 参考

小结

最近在使用MySQL8.0.37过程中返回的两个错误(Error Code: 3780和Communications link failure),进行了解决。

问题及解决

Error Code: 3780. Referencing column 'xxx' and referenced column 'xxx' in foreign key constraint 'zzz' are incompatible

出更 这个问题的原因是因为数据表的COLLATE属性不匹配,对数据表的创建进行以下修改:

sql 复制代码
/* Create Tables */

CREATE TABLE `XXX_LIST`
(
	`XXXID` VARCHAR(20) NOT NULL,
	`CONFIGURATIONID` INT NOT NULL,
	CONSTRAINT `PK_XXX_LIST_CONFIGURATION` PRIMARY KEY (`XXXID` ASC)
) 
;

修改COLLATE属性一致,问题解决。

sql 复制代码
/* Create Tables */

CREATE TABLE `XXX_LIST`
(
	`XXXID` VARCHAR(20) NOT NULL,
	`CONFIGURATIONID` INT NOT NULL,
	CONSTRAINT `PK_XXX_LIST_CONFIGURATION` PRIMARY KEY (`XXXID` ASC)
) ENGINE=InnoDB 
    DEFAULT CHARSET=latin1 
    COLLATE latin1_swedish_ci;
;

具体报错如下:

java 复制代码
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
	at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174) ~[mysql-connector-j-8.3.0.jar:8.3.0]
	at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64) ~[mysql-connector-j-8.3.0.jar:8.3.0]
	at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:815) ~[mysql-connector-j-8.3.0.jar:8.3.0]
	at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:438) ~[mysql-connector-j-8.3.0.jar:8.3.0]
	at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241) ~[mysql-connector-j-8.3.0.jar:8.3.0]
	at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:189) ~[mysql-connector-j-8.3.0.jar:8.3.0]
    。。。。。。 省略   。。。。。。
Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure

进行各种检查,发现数据库连接有问题,进行相应的重置,问题解决。

参考

stackoverflow: Error when foreign referencing in mySQL (Error 3780)
stackoverflow: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure Spring boot

相关推荐
ClouGence5 小时前
Oracle 数据同步为什么会出现数据不一致?长事务是常被忽略的原因
数据库·后端·oracle
飞将8 小时前
从零实现数据库(2)——HashIndex + IndexManager
数据库
Nturmoils1 天前
订单列表慢查询,先看 WHERE、ORDER BY 和 LIMIT
数据库
渣波1 天前
拒绝 SQL 焦虑!手把手带你用 NestJS + Prisma + DTO 写出“防弹”级后端代码
javascript·数据库·后端
倔强的石头_2 天前
KingbaseES 新版MySQL 兼容版体验:旧版迁移 + 功能实测
数据库
倔强的石头_5 天前
《Kingbase护城河》——数据库存储空间全景探测与精细化瘦身实战
数据库
冬奇Lab6 天前
每日一个开源项目(第134篇):Zvec - 阿里开源的嵌入式向量数据库,向量搜索界的 SQLite
数据库·人工智能·llm
ClouGence6 天前
Oracle CDC 架构优化:从主库直连到 DataGuard 备库同步
数据库·后端·oracle
无响应de神6 天前
三、用户与权限管理
数据库·mysql
麦聪聊数据7 天前
数据服务化时代:企业数据能力输出的核心路径
数据库