【发布时间】:2019-02-25 05:36:18
【问题描述】:
我无法在 Netbeans 中设置 MySQL 8.0 jdbc 驱动程序。有人可以帮忙吗?
我的 Netbeans 8.0 IDE 是使用旧版本的 MySQL JDBC 驱动程序 5.1.23 设置的。我将 MySQL 升级到 8.0 并尝试在 Netbeans 中设置新的 JDBC 驱动程序,因为旧驱动程序无法连接到新数据库(*请参阅末尾的注释)。
这些是我遵循的步骤。
第 1 步:我从 D:\Program Files\NetBeans 8.0\ide\modules\ext 中删除了旧的 mysql 驱动程序 jar 文件并复制了新的 mysql-connector-java-8.0.12.jar 文件并重新启动了 IDE。
第 2 步:在Databases 下的“服务”选项卡中,我右键单击了Drivers 和New Driver...
第 3 步:在出现的对话框中,我单击 Add... 按钮并选择新的驱动程序 jar D:\Program Files\NetBeans 8.0\ide\modules\ext\mysql-connector-java-8.0.12.jar
此时Driver Class 自动填充com.mysql.jdbc.Driver,我无法点击OK 按钮,因为有一条消息Specified class is not a driver (java.sql.Driver)
我尝试将其更改为 com.mysql.cj.jdbc.Driver 但仍然给出相同的消息。
我从jar文件中反编译了com.mysql.jdbc.Driver,得到了这个:
package com.mysql.jdbc;
import java.io.PrintStream;
import java.sql.SQLException;
public class Driver
extends com.mysql.cj.jdbc.Driver
{
public Driver()
throws SQLException
{}
static
{
System.err.println("Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.");
}
}
对于 com.mysql.cj.jdbc.Driver 我得到了这个
package com.mysql.cj.jdbc;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Driver
extends NonRegisteringDriver
implements java.sql.Driver
{
public Driver()
throws SQLException
{}
static
{
try
{
DriverManager.registerDriver(new Driver());
}
catch (SQLException E)
{
throw new RuntimeException("Can't register driver!");
}
}
}
所以 com.mysql.jdbc.Driver 扩展了实现 java.sql.Driver 的 com.mysql.cj.jdbc.Driver 所以我不知道错误是怎么回事。
有人知道如何解决这个问题吗?我尝试了 6.0 驱动程序并得到了同样的错误。 5驱动工作但无法连接DB。
- 旁注。使用旧的 5 驱动程序时,我在尝试连接到数据库时遇到了 ClassCastException。 BigInt 不能转换为 Long。当我将应用程序中的驱动程序更改为新驱动程序时,问题就消失了。
【问题讨论】:
-
请注意,MySQL Connector/J 版本 6.0 从未为 GA 发布,这是唯一存在的开发/测试版本。
标签: mysql jdbc netbeans netbeans-8 mysql-connector