DatabaseException CommunicationsException:通信链接失败

时间:2012-01-29 06:56:02

标签: java mysql netbeans ubuntu jdbc

我使用Ubuntu&净豆。我从Netbeans向导创建了一个java桌面数据库应用程序。我使用MySQL数据库,我可以打开&从其服务→数据库运行查询。当我运行它时,我得到了下面的例外。当我清洁&构建Project运行jar文件,同样是Exception。我已经在同一台机器的双启动方式下安装了Windows,并且也有相同的MySQL数据库& Java的。当我使用Ubuntu Netbeans运行jar文件时,它完全在Windows中运行并显示数据库数据。我也做了另一种方式,我使用相同的数据库在Windows Netbeans中创建相同的Java应用程序,并且它与Netbeans和jar文件都运行良好。但是当我试图在Ubuntu中运行它时,无论是在Netbeans还是在jar文件显示以下异常。

  

[TopLink Info]:2012.01.29 11:16:58.898 - ServerSession(285416048) - TopLink,版本:Oracle TopLink Essentials - 2.0.1(Build b09d-fcs(12/06/2007))   2012年1月29日上午11:16:59 org.jdesktop.application.Application $ 1运行   严重:应用程序类customerrecordsu.CustomerRecordsUApp无法启动   本地异常堆栈:   例外[TOPLINK-4002](Oracle TopLink Essentials - 2.0.1(Build b09d-fcs(12/06/2007))):oracle.toplink.essentials.exceptions。

     

成功发送到服务器的最后一个数据包是0毫秒前。驱动程序未收到来自服务器的任何数据包。   错误代码:0       at oracle.toplink.essentials.exceptions.DatabaseException.sqlException(DatabaseException.java:305)

... lot of more
  

引起:java.net.SocketException:无法连接到SOCKS代理:连接被拒绝       在java.net.SocksSocketImpl.connect(SocksSocketImpl.java:427)

... lot of more

以下是删除评论的“my.cnf”文件的一部分。

[client]
port        = 3306
socket      = /var/run/mysqld/mysqld.sock
[mysqld_safe]
socket      = /var/run/mysqld/mysqld.sock
nice        = 0
[mysqld]
user        = mysql
socket      = /var/run/mysqld/mysqld.sock
port        = 3306

skip-external-locking
bind-address        = 127.0.0.1
下面的

是persistance.xml文件的一部分

  <property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/>
  <property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/MyBusinessRecords"/>
  <property name="toplink.jdbc.user" value="root"/>
  <property name="toplink.jdbc.password" value="password"/>

Netbeans向导使用JPA,&amp;顶部链接。我使用纯Java创建一个没有向导的程序,它在Ubuntu中按预期完美地工作并显示数据库数据。该计划如下。上面和下面都使用相同的Java MySQL connector.jar。

public static void main(String[] args) {
    Connection con = null;
    Statement st = null;
    ResultSet rs = null;
    int id = 0;
    String name = null;
    try {
        String url = "jdbc:mysql://localhost:3306/MyBusinessRecords";
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        con = DriverManager.getConnection(url, "root", "5843");
        if (con != null) {
            System.out.println("A database connection has been establised!");
            st = con.createStatement();
            rs = st.executeQuery("select * from COUNTRIES");
            while(rs.next()){
            id = rs.getInt(1);
            name = rs.getString(2);
                System.out.println("id = " + id + " Name = " + name);
            }
        }
    } catch (Exception e) {
        System.out.println("Problem" + e.toString());
    } finally {
        if (con != null) {
            try {
                rs.close();
                st.close();
                con.close();
            } catch (Exception e) {
                System.out.println(e.toString());
            }
            con = null;
        }
    }
}

这是我的系统

java版“1.7.0_01” Java HotSpot(TM)64位服务器VM(版本21.1-b02,混合模式) Ubuntu 11.10。 OS类型为64位 MySQL版本 - MySQL 5.1.58-1ubuntu1 MySQL客户端版本5.1.58 套接字:/var/run/mysqld/mysqld.sock

我读过Q&amp;在这个网站上有超过15个同样的问题,但现在有人帮助了我。请帮帮我。

2 个答案:

答案 0 :(得分:0)

   String url = "jdbc:mysql://localhost:3306/MyBusinessRecords";
     

引起:java.net.SocketException:无法连接到SOCKS代理:   一个不存在的SOCKS代理   bind-address = 127.0.0.1   您可以尝试bind-address = 0.0.0.0或jdbc:mysql://127.0.0.1:3306 / MyBusinessRecords“

答案 1 :(得分:0)

尝试使用Java 1.6。我有一个类似的问题,并改回Java 1.6(我升级到1_7),问题消失了。可能需要1_7的不同toplink或OracleDriver版本。