Connector/J 升级 mysql 到版本 8 后出错
Connector/J error after upgrade mysql to version 8
问题:
我已将 mysql 升级到最新版本:
127.0.0.1$ mysql -V
mysql Ver 14.14 Distrib 8.0.0-dmr, for Linux (x86_64) using EditLine wrapper
现在我无法通过 jdbc
使用程序 mathematica
中的驱动程序 connector/j
连接 mysql
。当我尝试这样做时,我看到异常:
JDBC::error: java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long
我完成的调试
为了调试,我在虚拟机上安装了最早的 mysql
。
192.168.43.48$ mysql -V
mysql Ver 14.14 Distrib 5.5.53, for debian-linux-gnu (x86_64) using readline 6.3
并且与最早的 mysql
的连接已正确完成。
您可以在屏幕上看到初始化连接的命令和这些结果:
我的 Mathematica 使用以下版本的 JDBC
和 Connector/J
:
- JDBC 有版本 3
- Connector/J 有 5.1.27
我通过执行命令获取这些信息(在 mathematica
而不是 bash
):
JDBCDrivers["MySQL(Connector/J)"]
给出输出:
JDBCDriver["Name" -> "MySQL(Connector/J)",
"Driver" -> "com.mysql.jdbc.Driver", "Protocol" -> "jdbc:mysql://",
"Version" -> 3.,
"Description" ->
"MySQL using Connector/J - Version 5.1.27 - This supports all known \
MySQL server versions.",
"Location" ->
"/usr/local/Wolfram/Mathematica/10.0/SystemFiles/Links/DatabaseLink/\
DatabaseResources/mysql.m"]
我附加了关于 java 版本的信息:
127.0.0.1$ java -version
openjdk version "9-internal"
OpenJDK Runtime Environment (build 9-internal+0-2016-04-14-195246.buildd.src)
OpenJDK 64-Bit Server VM (build 9-internal+0-2016-04-14-195246.buildd.src, mixed mode)
我应该升级 jdbc
、connector/j
还是降级 mysql
?也许还有其他解决方案?
Connector/J 5.x 不会连接到 MySQL 8.x 数据库;你必须使用 8.0.x Connector/J 驱动程序。
请注意,对于 8.0.x Connector/J 驱动程序,类路径也发生了变化,从 com.mysql.jdbc.Driver
到 com.mysql.cj.jdbc.Driver
。
问题:
我已将 mysql 升级到最新版本:
127.0.0.1$ mysql -V
mysql Ver 14.14 Distrib 8.0.0-dmr, for Linux (x86_64) using EditLine wrapper
现在我无法通过 jdbc
使用程序 mathematica
中的驱动程序 connector/j
连接 mysql
。当我尝试这样做时,我看到异常:
JDBC::error: java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long
我完成的调试
为了调试,我在虚拟机上安装了最早的 mysql
。
192.168.43.48$ mysql -V
mysql Ver 14.14 Distrib 5.5.53, for debian-linux-gnu (x86_64) using readline 6.3
并且与最早的 mysql
的连接已正确完成。
您可以在屏幕上看到初始化连接的命令和这些结果:
我的 Mathematica 使用以下版本的 JDBC
和 Connector/J
:
- JDBC 有版本 3
- Connector/J 有 5.1.27
我通过执行命令获取这些信息(在 mathematica
而不是 bash
):
JDBCDrivers["MySQL(Connector/J)"]
给出输出:
JDBCDriver["Name" -> "MySQL(Connector/J)",
"Driver" -> "com.mysql.jdbc.Driver", "Protocol" -> "jdbc:mysql://",
"Version" -> 3.,
"Description" ->
"MySQL using Connector/J - Version 5.1.27 - This supports all known \
MySQL server versions.",
"Location" ->
"/usr/local/Wolfram/Mathematica/10.0/SystemFiles/Links/DatabaseLink/\
DatabaseResources/mysql.m"]
我附加了关于 java 版本的信息:
127.0.0.1$ java -version
openjdk version "9-internal"
OpenJDK Runtime Environment (build 9-internal+0-2016-04-14-195246.buildd.src)
OpenJDK 64-Bit Server VM (build 9-internal+0-2016-04-14-195246.buildd.src, mixed mode)
我应该升级 jdbc
、connector/j
还是降级 mysql
?也许还有其他解决方案?
Connector/J 5.x 不会连接到 MySQL 8.x 数据库;你必须使用 8.0.x Connector/J 驱动程序。
请注意,对于 8.0.x Connector/J 驱动程序,类路径也发生了变化,从 com.mysql.jdbc.Driver
到 com.mysql.cj.jdbc.Driver
。