我正在编写一个简单的Flink程序来将数据从MySQL转移到Mongo。
我正在使用mysql-连接器-java 8.0.16。
问题所在
当我试图连接到我们的测试env (MySQL 8.0.15)时,程序运行得很好。连接字符串如下所示:
jdbc:mysql://my-test-db-url:3306/my_db_name但是,一旦我将它连接到生产DB (MySQL 8.0.16),我得到了:
java.sql.SQLException: No suitable driver found for jdbc:mysql://my-prod-db-url:3306/my_db_name这些DB的唯一区别是次要版本(15比16)。
我试过的
升级测试数据库以匹配prod版本
我将我的测试DB升级到8.0.16,以查看该版本的mysql服务器是否有问题。实际上,现在我也无法连接到测试DB,也无法获得相同的异常。
之后,我继续将mysql-连接器-java和测试DB升级到8.0.17,但问题仍然存在。
在我的其他项目中,我可以很好地连接到那些mysql (使用spring和MySQL连接器-java 8.0.18)。所以db服务器应该没有任何问题。
手动将mysql-连接器-java jar放到flink/lib文件夹中。
这不管用
在主类中手动注册驱动程序和mysql源代码函数的开放方法
在main类中没有引发错误。
// tried both
Class.forName("com.mysql.jdbc.Driver").newInstance();
Class.forName("com.mysql.cj.jdbc.Driver").newInstance();我还确保在运行maven包之后,我的fat jar确实包含连接器类文件。
现在我几乎毫无头绪。谁来救救我。
发布于 2022-09-29 13:14:54
我遇到了这个问题,并注意到flink:https://issues.apache.org/jira/browse/FLINK-20540上有一个JIRA错误。它给出了一个线索:
实例化baseUrl时,baseUrl必须以/当实例化JdbcCatalog结束。
我试图改变baseUrl,但它对我起了作用。
发布于 2022-02-22 19:26:03
在调用Class.forName("org.sqlite.JDBC")之前,我使用DriverManager.getConnection解决了相同的问题(我使用的是sqlite)。这几乎和您尝试过的一样,但是没有调用newInstance()。
https://stackoverflow.com/questions/63119874
复制相似问题