包com.mysql.jdbc.exceptions.jdbc4在mysql连接器/J 8中不存在



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论坛上找到了相关的主题:连接器/J8,捕获主键冲突。以下是MySQL代表的回答:

您可以捕获java.sql.SQLIntegrityConstraintViolationException。由于c/J,需要MySQLIntegrityConstraintViolationException5.1混合代码,它没有做任何特定的事情,只是扩展了这个java.sql.SQLIntegrityConstraintViolationException。

换句话说,已经删除了包以重用现有的java.sql异常类,这是一件好事,但仍然应该记录下来。由于前面提到的讨论,错误报告已经创建:错误#91439升级指南需要通知删除/重构的异常

当我进一步检查我的项目中的错误时,我发现了这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异常(