文章目录
- 小结
- 问题及解决
-
- [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;
;
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
具体报错如下:
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