jdbc无法连接数据库mysql_无法使用Java JDBC连接到MySQL数据库

我创建了一个简单的类来测试我使用Mysql Workbench创建的localhost数据库的通信 . Mysql Server正在运行 . JDBC驱动程序已添加到项目的Classpath中 .

public class Database

{

public static void main(String[] args)

throws SQLException, ClassNotFoundException

{

Connection connection = null;

String serverName = "localhost:3306";

String databaseName = "detector_tests";

String url = "jdbc:mysql://" + serverName + "/" + databaseName

+ "?useSSL=TRUE";

String username = "simon";

String password = "password123";

connection = DriverManager.getConnection(url, username, password);

}

}

当我运行程序时,我得到以下异常:

线程“main”中的异常com.mysql.cj.jdbc.exceptions.CommunicationsException:通信链接失败成功发送到服务器的最后一个数据包是0毫秒前 . 驱动程序未收到来自服务器的任何数据包 . 在com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:172)在com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64)在com.mysql.cj.jdbc com.mysql.cj.jdbc.ConnectionImpl . (ConnectionImpl.java:444)中的.ConnectionImpl.createNewIO(ConnectionImpl.java:862)位于com的com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:230) Database.main上的java.sql.DriverManager.getConnection(未知源)中的.sysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:226)位于java.sql.DriverManager.getConnection(未知来源)(Database.java: 17)由以下原因引起:com.mysql.cj.exceptions.CJCommunicationsException:通信链路故障成功发送到服务器的最后一个数据包是0毫秒前 . 驱动程序未收到来自服务器的任何数据包 . 在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)在sun.reflect.NativeConstructorAccessorImpl.newInstance(来源不明)在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(来源不明)在java.lang.reflect.Constructor.newInstance(来源不明)在com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:59)在com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:103)在com.mysql.cj.exceptions.ExceptionFactory.createException (ExceptionFactory.java:149)com的com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:165)com的com.mysql.cj.protocol.a.NativeProtocol.negotiateSSLConnection(NativeProtocol.java:355) . mysql.cj.protocol.a.NativeAuthenticationProvider.negotiateSSLConnection(NativeAuthenticationProvider.java:789)在com.mysql.cj.protocol.a.NativeAuthenticationProvider.proceedHandshakeWithPluggableAuthentication(NativeAuthenticationProvider.java:499)在com.m ysql.cj.protocol.a.NativeAuthenticationProvider.connect(NativeAuthenticationProvider.java:217)位于com.mysql.cj.protocol.a.NativeProtocol.connect(NativeProtocol.java:1411)的com.mysql.cj.NativeSession.connect( NativeSession.java:165)com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:982)com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:852)... 6更多引起by:javax.net.ssl.SSLHandshakeException:java.security.cert.CertificateException:java.security.cert.CertPathValidatorException:Path不与sun.security.ssl.Alerts.getSSLException(未知来源)中的任何信任锚链接在sun.security.ssl.SSLSocketImpl.fatal(未知来源)sun.security.ssl.Handshaker.fatalSE(未知来源)sun.security.ssl.Handshaker.fatalSE(未知来源)at sun.security.ssl.ClientHandshaker位于sun.security.ssl.Handshaker.processLoop(未知Sou)的sun.security.ssl.ClientHandshaker.processMessage(未知来源)的.serverCertificate(未知来源) rce)at sun.security.ssl.Handshaker.process_record(Unknown Source)at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)at sun.security.ssl .SSLSocketImpl.startHandshake(未知来源)在sun.security.ssl.SSLSocketImpl.startHandshake(未知来源)在com.mysql.cj.protocol.ExportControlled.performTlsHandshake(ExportControlled.java:213)在com.mysql.cj.protocol . StandardSocketFactory.performTlsHandshake(StandardSocketFactory.java:206)在com.mysql.cj.protocol.a.NativeSocketConnection.performTlsHandshake(NativeSocketConnection.java:99)在com.mysql.cj.protocol.a.NativeProtocol.negotiateSSLConnection(NativeProtocol.java: 350)... 13更多引起:java.security.cert.CertificateException:java.security.cert.CertPathValidatorException:Path不与com.mysql.cj.protocol.ExportControlled $ X509TrustManagerWrapper.checkServerTrusted中的任何信任锚链接 . (ExportControlled.java:280)在sun.security .ssl.AbstractTrustManagerWrapper.checkServerTrusted(未知来源)... 25更多引起by:java.security.cert.CertPathValidatorException:Path不与sun.security.provider.certpath.PKIXCertPathValidator.certpath.PKIXCertPathValidator.engineValidate(未知)中sun.security.provider.certpath.PKIXCertPathValidator.validate(未知来源)的任何信任锚链接 . 来自)com.mysql.cj.protocol.ExportControlled的java.security.cert.CertPathValidator.validate(未知来源)$ X509TrustManagerWrapper.checkServerTrusted(ExportControlled.java:273)... 26更多

看来我需要添加某种证书或其他东西 . 我不确定,因为我对数据库很新 . 任何具有相同经验或解决方案的人?如果您需要更多信息,我很乐意编辑帖子 .

提前致谢!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我了解到您想了解如何通过JDBC连接MySQL数据库使用Spark DataFrame进行数据操作。 首先,您需要在Spark应用程序中引入相应的JDBC驱动程序。如果您使用MySQL数据库,则可以通过以下方式引入MySQL驱动程序: ```scala // Scala val spark = SparkSession.builder() .appName("JDBC example") .config("spark.master", "local") .getOrCreate() // Add MySQL JDBC driver spark.sparkContext.addJar("/path/to/mysql-connector-java.jar") ``` ```java // Java SparkSession spark = SparkSession.builder() .appName("JDBC example") .config("spark.master", "local") .getOrCreate(); // Add MySQL JDBC driver spark.sparkContext().addJar("/path/to/mysql-connector-java.jar"); ``` 接下来,您需要指定MySQL数据库连接参数,例如URL、用户名和密码等。以下是一个示例: ```scala // Scala val jdbcUrl = "jdbc:mysql://localhost:3306/mydatabase" val connectionProperties = new Properties() connectionProperties.put("user", "myuser") connectionProperties.put("password", "mypassword") ``` ```java // Java String jdbcUrl = "jdbc:mysql://localhost:3306/mydatabase"; Properties connectionProperties = new Properties(); connectionProperties.put("user", "myuser"); connectionProperties.put("password", "mypassword"); ``` 现在,您可以使用Spark DataFrame API来读取MySQL数据库中的数据。以下是一个示例: ```scala // Scala val df = spark.read.jdbc(jdbcUrl, "mytable", connectionProperties) df.show() // Filter data val filteredDf = df.filter($"age" > 30) filteredDf.show() // Write data filteredDf.write.jdbc(jdbcUrl, "filtered_table", connectionProperties) ``` ```java // Java Dataset<Row> df = spark.read().jdbc(jdbcUrl, "mytable", connectionProperties); df.show(); // Filter data Dataset<Row> filteredDf = df.filter(col("age").gt(30)); filteredDf.show(); // Write data filteredDf.write().jdbc(jdbcUrl, "filtered_table", connectionProperties); ``` 以上示例演示了如何使用Spark DataFrame API读取、过滤和写入MySQL数据库中的数据。您可以根据自己的需求进行相应的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值