如何修复在 netbeans 中找不到适合 jdbc:mysql://localhost:3306/XXXX 的驱动程序
How to fix No suitable driver found for jdbc:mysql://localhost:3306/XXXX in netbeans
我有一个 Web 应用程序应该从本地主机数据库中提取数据。我正在使用 Severlets 和 mysql jdbc、eclipseLink。问题是当我部署应用程序时它给我以下错误,即使我已经创建了工作正常的数据库连接并将最新的 mysql (8.0.16) jar 添加到库中。
Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services -
2.7.0.v20170811-d680af5):
org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: No suitable driver found for
jdbc:mysql://localhost:3306/sampledb?zeroDateTimeBehavior=convertToNull
Error Code: 0
我还完成了 netbeans 8.2 和 java 的全新安装,但错误仍然存在。但我使用两台不同的 PC,这是同样的问题。出于某种原因,我认为 netbeans 有一个错误。我使用 glassfish 作为我的服务器,效果很好。
这是 link 你我的项目结构:https://res.cloudinary.com/dpsotxezr/image/upload/v1557082088/structure_2_migcvz.png
我在手动尝试连接到 mysql 服务器时也遇到此错误
mysqld: File '.\binlog.index' not found (OS errno 13 - Permission denied)
2019-05-05T18:51:07.133050Z 0 [System] [MY-010116] [Server] C:\Program
Files\MySQL\MySQL Server 8.0\bin\mysqld.exe (mysqld 8.0.16) starting as
process 1796
2019-05-05T18:51:09.509588Z 0 [Warning] [MY-010091] [Server] Can't create
test file C:\Program Files\MySQL\MySQL Server 8.0\data\LAPTOP-
43BL4A79.lower-test
2019-05-05T18:51:09.510028Z 0 [Warning] [MY-010091] [Server] Can't create
test file C:\Program Files\MySQL\MySQL Server 8.0\data\LAPTOP-
43BL4A79.lower-test
2019-05-05T18:51:10.672870Z 0 [ERROR] [MY-010119] [Server] Aborting
2019-05-05T18:51:12.306701Z 0 [System] [MY-010910] [Server] C:\Program
Files\MySQL\MySQL Server 8.0\bin\mysqld.exe: Shutdown complete (mysqld
8.0.16) MySQL Community Server - GPL.
- 所以我已经将最新的mysql驱动添加到项目库
- 我也试过了
Class.forName("com.mysql.jdbc.Driver");
但还是不行
- Glassfish 说没有合适的驱动。
请帮忙,我已经尝试解决这个问题一个多星期了,这个网站上的相关问题解决方案似乎没有帮助。
我在这里看到了几个问题。首先,尝试使用一个简单的程序连接到您的数据库:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
// Notice, do not import com.mysql.cj.jdbc.*
// or you will have problems!
public class LoadDriver {
public static void main(String[] args) {
try {
// The newInstance() call is a work around for some
// broken Java implementations
Class.forName("com.mysql.cj.jdbc.Driver").newInstance();
} catch (Exception ex) {
// handle the error
}
}
}
(从https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-usagenotes-connect-drivermanager.html复制)
如您所见,类名已更改为 com.mysql.cj.jdbc.Driver
。
然后您尝试手动连接:您的权限被拒绝。我已经很长时间没有使用 Windows 但也许你可以将 MySql 安装到另一个文件夹中,例如 C:\mysql (另请参阅:https://dev.mysql.com/doc/refman/8.0/en/windows-installation-layout.html)
然后你 运行 可能会遇到另一个最新驱动程序的问题:MySQL JDBC Driver 5.1.33 - Time Zone Issue
最后但同样重要的是:如果一切正常并且您想更新 Glassfish 中的驱动程序,您需要将 jar 复制到 %GLASSFISH%/glassfish/lib
在连接之前将下面这行添加到您的项目中
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sampledb", "root", "");
我有一个 Web 应用程序应该从本地主机数据库中提取数据。我正在使用 Severlets 和 mysql jdbc、eclipseLink。问题是当我部署应用程序时它给我以下错误,即使我已经创建了工作正常的数据库连接并将最新的 mysql (8.0.16) jar 添加到库中。
Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services -
2.7.0.v20170811-d680af5):
org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: No suitable driver found for
jdbc:mysql://localhost:3306/sampledb?zeroDateTimeBehavior=convertToNull
Error Code: 0
我还完成了 netbeans 8.2 和 java 的全新安装,但错误仍然存在。但我使用两台不同的 PC,这是同样的问题。出于某种原因,我认为 netbeans 有一个错误。我使用 glassfish 作为我的服务器,效果很好。
这是 link 你我的项目结构:https://res.cloudinary.com/dpsotxezr/image/upload/v1557082088/structure_2_migcvz.png
我在手动尝试连接到 mysql 服务器时也遇到此错误
mysqld: File '.\binlog.index' not found (OS errno 13 - Permission denied)
2019-05-05T18:51:07.133050Z 0 [System] [MY-010116] [Server] C:\Program
Files\MySQL\MySQL Server 8.0\bin\mysqld.exe (mysqld 8.0.16) starting as
process 1796
2019-05-05T18:51:09.509588Z 0 [Warning] [MY-010091] [Server] Can't create
test file C:\Program Files\MySQL\MySQL Server 8.0\data\LAPTOP-
43BL4A79.lower-test
2019-05-05T18:51:09.510028Z 0 [Warning] [MY-010091] [Server] Can't create
test file C:\Program Files\MySQL\MySQL Server 8.0\data\LAPTOP-
43BL4A79.lower-test
2019-05-05T18:51:10.672870Z 0 [ERROR] [MY-010119] [Server] Aborting
2019-05-05T18:51:12.306701Z 0 [System] [MY-010910] [Server] C:\Program
Files\MySQL\MySQL Server 8.0\bin\mysqld.exe: Shutdown complete (mysqld
8.0.16) MySQL Community Server - GPL.
- 所以我已经将最新的mysql驱动添加到项目库
- 我也试过了 Class.forName("com.mysql.jdbc.Driver"); 但还是不行
- Glassfish 说没有合适的驱动。
请帮忙,我已经尝试解决这个问题一个多星期了,这个网站上的相关问题解决方案似乎没有帮助。
我在这里看到了几个问题。首先,尝试使用一个简单的程序连接到您的数据库:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
// Notice, do not import com.mysql.cj.jdbc.*
// or you will have problems!
public class LoadDriver {
public static void main(String[] args) {
try {
// The newInstance() call is a work around for some
// broken Java implementations
Class.forName("com.mysql.cj.jdbc.Driver").newInstance();
} catch (Exception ex) {
// handle the error
}
}
}
(从https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-usagenotes-connect-drivermanager.html复制)
如您所见,类名已更改为 com.mysql.cj.jdbc.Driver
。
然后您尝试手动连接:您的权限被拒绝。我已经很长时间没有使用 Windows 但也许你可以将 MySql 安装到另一个文件夹中,例如 C:\mysql (另请参阅:https://dev.mysql.com/doc/refman/8.0/en/windows-installation-layout.html)
然后你 运行 可能会遇到另一个最新驱动程序的问题:MySQL JDBC Driver 5.1.33 - Time Zone Issue
最后但同样重要的是:如果一切正常并且您想更新 Glassfish 中的驱动程序,您需要将 jar 复制到 %GLASSFISH%/glassfish/lib
在连接之前将下面这行添加到您的项目中
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sampledb", "root", "");