首页 文章

无法与MySQL Build JDBC连接(使用Java,IntelliJ和Linux)

提问于
浏览
5

我在尝试使用以下代码获取数据库连接时遇到问题:

try {
        Class.forName("com.mysql.jdbc.Driver");
        Properties p = new Properties();
        p.put("user", user_name);
        p.put("password", password);
        connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1/jsp_test", p);
    } catch (SQLException ex) {
        // handle any errors
        ex.printStackTrace();
        System.out.println("SQLException: " + ex.getMessage());
        System.out.println("SQLState: " + ex.getSQLState());
        System.out.println("VendorError: " + ex.getErrorCode());
        return false;
    } catch (ClassNotFoundException e) {
        e.printStackTrace();  
    }

输出的错误消息是:

/ usr / lib / jvm / java-6-openjdk / bin / java -Didea.launcher.port = 7532 -Didea.launcher.bin.path = / usr / bin / idea / bin -Dfile.encoding = UTF-8 -classpath /usr/lib/jvm/java-6-openjdk/jre/lib/jce.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/about.jar:/usr/lib/jvm /java-6-openjdk/jre/lib/resources.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/management-agent.jar:/usr/lib/jvm/java-6-openjdk /jre/lib/jsse.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/charsets.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar :/usr/lib/jvm/java-6-openjdk/jre/lib/ext/localedata.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/ext/sunjce_provider.jar:在/ usr / lib / jvm / java-6-openjdk / jre / lib / ext / sunpkcs11.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/ext/dnsns.jar:/ home / bedtimes / Java Projects /db_demo/out/production/db_demo:/opt/java/jre/lib/ext/mysql-connector-java-5.1.10-bin.jar:/usr/bin/idea/lib/idea_rt.jar com.intellij . rt.execution.application.AppMain Main com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障最后一个数据包发送s 0毫秒之前,服务器是否成功 . 驱动程序未收到来自服务器的任何数据包 . at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java.lang.reflect.Constructor .newInstance(Constructor.java:532)在com.mysql.jdbc.Util.handleNewInstance(Util.java:406)在com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)在com.mysql.jdbc . ConnectionImpl.createNewIO(ConnectionImpl.java:2214)在com.mysql.jdbc.ConnectionImpl . (ConnectionImpl.java:781)在com.mysql.jdbc.JDBC4Connection . (JDBC4Connection.java:46)在sun.reflect.NativeConstructorAccessorImpl.newInstance0 (本机方法)在sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)在java.lang.reflect.Constructor.newInstance(Constructor.java:53 2)com.mysql.jdbc.Util.handleNewInstance(Util.java:406)at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:352)at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java) :284)java.sql.DriverManager.getConnection(DriverManager.java:620),位于Main.main的database.Database.connect(Database.java:80)的java.sql.DriverManager.getConnection(DriverManager.java:169) (Main.java:13)在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)在java.lang.reflect.Method.invoke(Method.java:616)at com.intellij.rt.execution.application.AppMain.main(AppMain.java:110)引起:com.mysql.jdbc.exceptions.jdbc4 . CommunicationsException:通信链路故障成功发送到服务器的最后一个数据包是0毫秒前 . 驱动程序未收到来自服务器的任何数据包 . at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java.lang.reflect.Constructor .newInstance(Constructor.java:532)在com.mysql.jdbc.Util.handleNewInstance(Util.java:406)在com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)在com.mysql.jdbc . MysqlIO . (MysqlIO.java:343)at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2137)... 18更多引起:java.net.ConnectException:连接在java.net.PlainSocketImpl.socketConnect被拒绝(本机方法)在java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:310)在java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:176)在java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:163)在java.net.SocksSocketImpl.connect(袜子sSocketImpl.java:384)java.net.Socket.connect(Socket.java:542)at java.net.Socket.connect(Socket.java:492)at java.net.Socket . (Socket.java:389)在java.net.Socket . (Socket.java:232)atcom.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:253)在com.mysql.jdbc.MysqlIO . (MysqlIO.java:292)... 19更多SQLException:通信链接失败最后一个数据包成功发送到服务器是0毫秒前 . 驱动程序未收到来自服务器的任何数据包 . SQLState:08S01 VendorError:0进程以退出代码0结束

从字面上看,我不知道如何解决此错误消息 . 数据库存在 . 用户名和密码存在 . 我目前没有在数据库中添加任何表格,但我不认为这可能是问题,因为我毕竟只是 Build 连接...

如果需要,我可以提供额外的信息 . 我觉得我已经尝试了很多 . 有没有人知道如何获得有关它失败的方式和原因的进一步信息?

谢谢你的帮助! :)

4 回答

  • 1

    从您的连接字符串,此数据库应位于本地计算机上 . 您是否可以尝试运行此命令以确保套接字已打开以进行连接?

    telnet 127.0.0.1 3306

    并确保它连接?您可能没有将mysql实例配置为侦听来自此计算机或此接口地址的连接 . 如果连接失败,则需要修改mysql配置,例如:

    http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html

  • 1

    我有相同的症状,但对我来说解决方案是在/etc/mysql/my.cnf中将bind-address更改为0.0.0.0

    (只是将其发布给寻求这个问题答案的其他人)

  • 6

    您可以尝试这样做:

    connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/jsp_test","user_name","password");
    
  • 1

    您可以尝试以下之一

    "jdbc:mysql://localhost:3306/jsp_test","username","password"
    

    要么

    "jdbc:mysql://'your machines ip (without quote)':3306/jsp_test","username","password"
    

    要么

    "jdbc:mysql://127.0.0.1:3306/jsp_test","username","password"
    

    作为连接字符串 .

相关问题