我无法在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驱动程序有效,但无法连接到数据库。
答案 0 :(得分:1)
首先,我成功地将mysql-connector-java-8.0.12.jar
用作NetBeans 8.2上MySQL 8.0的驱动程序,因此它肯定可以工作:
我看不出您的问题有任何明显的原因,但是您可以尝试一些方法来解决此问题:
在您的新JDBC驱动程序屏幕快照中,NetBeans正在命名驱动程序 MySQL(连接器/ J驱动程序)(1) 。大概是因为您已经有一个名为 MySQL(Connector / J驱动程序) 的驱动程序,并且您的第一个屏幕截图确认了这一点。为什么要尝试为MySQL添加第二个驱动程序?如果没有充分的理由,您可以删除旧的驱动程序,然后再次尝试添加驱动程序吗?
检查8.0.12驱动程序的多个实例,并删除文件存储中的所有旧MySQL 5.x和MySQL 8.x驱动程序,除非有充分的理由保留它们中的任何一个。
download page for Connector/J声明“我们建议您使用MD5校验和和GnuPG签名来验证所下载软件包的完整性”。是你做的吗?您的文件损坏的可能性很小,但有可能。另外,请注意,在下载Windows驱动程序时,必须选择“独立于平台” 。
NetBeans可能正在缓存导致此问题的内容。就我而言,这只是一个疯狂而绝望的猜测,根本没有证据支持它,但是您可以轻松安全地删除缓存以消除它:
检查NetBeans日志以了解问题所在:
由于NetBeans 8.0相当老,因此可能存在问题。是否可以升级到8.2或9.0版本?
根据OP中评论的反馈进行更新:
OP报告NetBeans日志中的此消息是导致问题的原因:
INFO [org.netbeans.modules.db.explorer.dlg.AddDriverDialog]: Got an
exception trying to load class com.mysql.jdbc.Driver during search for
JDBC drivers in driver jar(s): java.lang.UnsupportedClassVersionError:
com/mysql/jdbc/Driver : Unsupported major.minor version 52.0. Skipping
this class...
Connector / J 8.0 驱动程序requires Java 8:
它是Java 8平台的MySQL驱动程序。对于Java 7或更早版本, 改用Connector / J 5.1。
因此,在 netBeans.conf 中将NetBeans的默认平台从JDK 7更新到JDK 8可以解决此问题。
答案 1 :(得分:0)
使用Connection Properties
按钮并添加一个属性,其属性为字段名称serverTimezone
和值UTC
。
如果错误是由于时区问题引起的,这应该可以工作。