java - JDBC 无法连接到数据库

标签 java mysql jdbc

<分区>

我写了一些代码来在本地数据库中插入一个表,并且我在每个堆栈跟踪中收到以下错误:

java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:108)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:87)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:61)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:71)
    at com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:932)
    at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:857)
    at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:444)
    at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:230)
    at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:226)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:247)
    at CreateTable.main(CreateTable.java:24)
Caused by: com.mysql.cj.exceptions.WrongArgumentException: No timezone mapping entry for 'PDT'
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:59)
    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:83)
    at com.mysql.cj.protocol.a.NativeProtocol.configureTimezone(NativeProtocol.java:2215)
    at com.mysql.cj.protocol.a.NativeProtocol.initServerSession(NativeProtocol.java:2225)
    at com.mysql.cj.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:1391)
    at com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:895)
    ... 7 more

显然,我可能是错的,但这与我的时区或在 MySQL 或 JDBC 连接器中设置时区的方式有关。

这是我的原始源代码:

import com.mysql.jdbc.Driver;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class CreateTable {
    public static void main(String[] args) throws SQLException {
        Connection myConnection = null;
        Statement myStmt = null;
        //ResultSet rs = null;
        String sql = "create table student(student_id varchar(20) primary key, name varchar(30), class varchar(15), marks varchar(10);";

        try {
        /*
        Get Connection to jdbc
        */
        myConnection = DriverManager.getConnection("jdbc:mysql://localhost:3306/edureka?autoReconnect=true&useSSL=false", "userOne", "password");

        /*Create an object for passing SQL queries to DB */
        myStmt = myConnection.createStatement();

        /*Execute a resulting statement to create a table in the DB */
        myStmt.executeQuery(sql);

        System.out.println("DB Table created in Database Edureka!");

        } catch(Exception e) {
            e.printStackTrace();
        }

    }
}

最佳答案

尝试通过添加时区信息来修改连接 url:

myConnection = DriverManager.getConnection("jdbc:mysql://localhost:3306/edureka?autoReconnect=true&useSSL=false&serverTimezone=PDT", "userOne", "password");

关于java - JDBC 无法连接到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50670537/

相关文章:

java - 如何使用 Java 通过 LAN 连接到 Access 数据库?

java - 如何清理 Log4j 中的日志消息以将它们保存在数据库中

Java 流 : filter(). count() 与 anyMatch()

java - 为什么查询 Androids MediaStore 返回空光标?

java - Apache Pig : unable to run my own pig. jar 和 pig-withouthadoop.jar

php - 为什么这个脚本没有按预期工作?

java - 如何使用Java将HTML文本存储在sql数据库中

java - 在 Akka 中从客户端向服务器发送毒丸

php - 通过php从Mysql数据库中选择数据并随机显示其中的一些数据

java - 使用 h2 数据库的 JUnit 测试表现异常