java - MySQL 服务器 - JDBC 连接

标签 java mysql jdbc

我在使用 JDBC 的 ConnectJ 驱动程序连接到 mySQL 服务器时遇到问题。 我写了一个简单的程序来建立连接,如下所示:

private static final String DB_DRIVER = "com.mysql.jdbc.Driver";
private static final String DB_CONNECTION = "jdbc:mysql://[host]:1521/OBIEE11G";    
private static final String DB_USER = "OBADW";
private static final String DB_PASSWORD = "OBADW";

public static Connection getConnection() {

    Connection dbConnection = null;
    try {
        // DriverManager.registerDriver(new com.mysql.jdbc.Driver());
        Class.forName(DB_DRIVER);
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
        System.out.println(e.getMessage());
    }
    try {
        // DriverManager.registerDriver(new com.mysql.jdbc.Driver());
        System.out.println("before get connection ***********");
        System.out.println("Java version: " + System.getProperty("java.version"));
        Driver driver = (Driver) Class.forName("com.mysql.jdbc.Driver").newInstance();
        System.out.println("JDBC driver: " + driver.getMajorVersion() + "." + driver.getMinorVersion());
        dbConnection = DriverManager.getConnection(DB_CONNECTION, DB_USER, DB_PASSWORD);
        System.out.println("Connection: " + dbConnection.getClass().getName());
        System.out.println("after get connection ***********");
        return dbConnection;
    } catch (SQLException | InstantiationException | IllegalAccessException | ClassNotFoundException e) {
        e.printStackTrace();
        System.out.println(e.getMessage());
    }
    return dbConnection;
}

public static void main(String[] args) {
    Connection dbConnection = getConnection();

    if (dbConnection != null) {
        System.out.println("Connected");
    } else {
        System.out.println("Failed");
    }

我收到以下错误:

before get connection ***********
Java version: 1.7.0
JDBC driver: 5.1
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:85)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:57)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:541)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:983)
    at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:628)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1014)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2254)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2285)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2084)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:795)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:85)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:57)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:541)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:400)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:327)
    at java.sql.DriverManager.getConnection(DriverManager.java:582)
    at java.sql.DriverManager.getConnection(DriverManager.java:226)
    at JDBCConnection.getConnection(JDBCConnection.java:32)
    at JDBCConnection.main(JDBCConnection.java:45)
Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
    at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2949)
    at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:560)
    ... 17 more
Communications link failure

最后一个成功发送到服务器的数据包是在 0 毫秒前。驱动程序尚未从服务器收到任何数据包。 失败

我正在使用 connectJ:mysql-connector-java-5.1.37-bin.jar Java 1.7,JDBC 驱动程序 5.1

我能够 ping 主机,并使用 mysql developer 连接它。 请提出建议。

最佳答案

从您的日志中可以清楚地看到“通信链接失败”

  • 确保你的 mysql 服务器正在运行
  • 确保您拥有正确的主机名/IP/端口
  • 确保您的网络正常运行

关于java - MySQL 服务器 - JDBC 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34938308/

相关文章:

php - 连接查询结果 : Possible?

php - PHP/MySQL 文件/数据库同步的神秘 503 错误

sql - PostgreSQL 在发送参数时要求 'group by' 子句

java - 如何更新 JSONB 列 postgres JDBC?

java - 转义字符 "|"错误(Linux命令)

java - 列表作为Java中的输出参数

java - 在 ActiveMQ 中创建启动队列与动态队列之间是否存在性能差异?

java - 如何解决 mqtt 客户端的 org.eclipse.paho.client.mqttv3.internal.ClientState.checkForActivity 问题?

mysql inner join with null select 结果?

mysql - 为什么启用服务器端准备好的语句会导致 CONCUR_UPDATABLE 错误?