我有一个Web应用程序,该应用程序应该从Localhost数据库中汲取数据。我正在使用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作为服务器,该服务器正常。
这是一个链接哟我的项目结构:https://res.cloudinary.com/dpsotxezr/image/upload/v1557082088/sstructure_2_migcvz.png
当手动尝试连接到MySQL Server时,我也会遇到此错误
mysqld: File '.binlog.index' not found (OS errno 13 - Permission denied)
2019-05-05T18:51:07.133050Z 0 [System] [MY-010116] [Server] C:Program
FilesMySQLMySQL Server 8.0binmysqld.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 FilesMySQLMySQL Server 8.0dataLAPTOP-
43BL4A79.lower-test
2019-05-05T18:51:09.510028Z 0 [Warning] [MY-010091] [Server] Can't create
test file C:Program FilesMySQLMySQL Server 8.0dataLAPTOP-
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
FilesMySQLMySQL Server 8.0binmysqld.exe: Shutdown complete (mysqld
8.0.16) MySQL Community Server - GPL.
- 所以我已经在项目库中添加了最新的MySQL驱动程序
- 我也尝试了class.forname(" com.mysql.jdbc.driver"(;但仍然不工作
- 玻璃鱼说没有合适的驾驶员。
请提供帮助,我一直在尝试解决此问题已有一个多星期了,并且本网站上的相关问题解决方案似乎没有帮助。
我在这里看到了几个问题。首先,尝试使用一个简单的程序连接到数据库:
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(
您可以看到className已更改为 com.mysql.cj.jdbc.Driver
。
然后您尝试手动连接:您获得了拒绝的权限。我很长一段时间没有使用Windows,但是也许您可以将MySQL安装到C: mysql等另一个文件夹中(另请参阅:https://dev.mysql.com/doc/refman/8.0/8.0/en/windows-installation--layout.html(
然后您可能会遇到最新驱动程序的另一个问题:MySQL JDBC驱动程序5.1.33-时区问题
和最后但并非最不重要的一点:如果您一切都可以使用,并且想在玻璃鱼中更新驾驶员,则需要将罐子复制为%glassfish%/玻璃鱼/lib/lib
在连接之前将下面的行添加到您的项目中
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sampledb", "root", "");