如何修复在 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.
  1. 所以我已经将最新的mysql驱动添加到项目库
  2. 我也试过了 Class.forName("com.mysql.jdbc.Driver"); 但还是不行
  3. 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", "");