java - 包 com.mysql.jdbc.exceptions.jdbc4 在 Mysql Connector/J 8 中不存在

标签 java mysql-connector

mysql-connector-java 版本 5.1.x 的 Maven 依赖项升级到 8.0.x 后,编译时收到以下错误:

[ERROR] /home/dev/testproject/src/main/java/DatabaseOperation.java:20: error: package com.mysql.jdbc.exceptions.jdbc4 does not exist
[ERROR] import com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException;

[ERROR] /home/dev/testproject/src/main/java/DatabaseService.java:15: error: package com.mysql.jdbc.exceptions.jdbc4 does not exist
[ERROR] import com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException;

显然 com.mysql.jdbc.exceptions.jdbc4 已被删除,没有任何弃用或迁移文档中的注释。现在有什么选择?

最佳答案

事实上,发行说明或迁移文档中没有提到这一点。我在 MySQL 论坛上找到了相关主题:Connector/J 8, catching primary key violations .这是那里的 MySQL 代表的回答:

You can catch java.sql.SQLIntegrityConstraintViolationException. MySQLIntegrityConstraintViolationException was needed because of c/J 5.1 hybrid code, it does nothing specific just extends this java.sql.SQLIntegrityConstraintViolationException.

换句话说,该包已被删除以重用现有的 java.sql 异常类,这是一件好事,但仍应记录在案。作为上述讨论的结果,已创建错误报告:Bug #91439 upgrade guide needs to inform of removed/refactored exceptions

当我进一步检查项目中的错误时,我发现了这 3 个异常及其 java.sql 映射:

  • com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException -> java.sql.SQLSyntaxErrorException
  • com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException -> java.sql.SQLIntegrityConstraintViolationException
  • com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException -> java.sql.SQLTransactionRollbackException

(我猜 jdbc4 包中的任何其他特定于 MySQL 的异常也映射到 java.sql 包中的类似 SQL 异常)

关于java - 包 com.mysql.jdbc.exceptions.jdbc4 在 Mysql Connector/J 8 中不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51381118/

相关文章:

java - 调用匿名(内部)类中的方法

java - 尝试 JCov java 覆盖实用程序时遇到错误

java - 哪个是java中用于XML解析的最佳库

mysql - 由于时间戳原因,LOAD DATA FROM S3 命令失败

mysql - Flask 应用程序中的第二个请求是否有修复 'MySQL connection not available' 的解决方案?

java - 无法解析导入 org.dom4j.*

java - 按钮光标显示不正确

python - 拒绝用户访问以连接 python docker 容器中的远程 MySQL 数据库

grails - Grails 3应用程序-使用Turo的pushy插件的Apple Push通知

c# - MySQL Connector .NET EF6 运算符 LIKE 不工作