我将mysql升级到最新版本:
127.0.0.1$ mysql -V
mysql Ver 14.14 Distrib 8.0.0-dmr, for Linux (x86_64) using EditLine wrapper
现在,我无法使用mysql
中的jdbc
使用connector/j
程序中的mathematica
与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
与旧JDBC
的连接已正确完成。
您可以在屏幕上看到命令初始化连接和这些结果:
我的Mathematica使用以下版本的Connector/J
和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"]
给出输出:
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)
我附上有关java版本的信息:
jdbc
我应该升级connector/j
,mysql
还是降级$query = DB::table($tableName);
// ...some logic...
foreach ($filters as $filter) {
$query->where($filter['col'], $filter['op'], $filter['val']);
}
// ...more logic...
if (isset($limit)) {
$query->limit($limit);
}
if (isset($columns)) {
// get desired columns
$records = $query->get($columns);
} else {
$records = $query->get();
}
?也许有另一种解决方案?
答案 0 :(得分:1)
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
。