0

我有这个小代码:

import groovy.sql.Sql
class GroovySqlExample1{
  static void main(String[] args) {
    def sql = Sql.newInstance("jdbc:mysql://localhost/jdb", "root",
           "root", "com.mysql.jdbc.Driver")
    sql.eachRow("select * from user"){ row ->
       //other code . . . . 
    }
  }
}

当我使用以下代码运行以下代码时:

 groovy -cp mysql-connector-java-5.1.18-bin.jar database.groovy

我得到这个大错误:

Caught: 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.
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 com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:344)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2332)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2369)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2153)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
    at GroovySqlExample1.main(database.groovy:4)
Caused by: java.net.ConnectException: Connection refused
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:257)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:294)
    ... 9 more

请注意,我可以登录到 mysql 为:

 mysql -u root -proot -hlocalhost

一切似乎都很好。但我仍然得到这些错误。我正在使用 Ubuntu 12.04。我在哪里犯错误?

4

1 回答 1

0

您应该为 MySQL DB 指定端口号,因为 JDBC 永远不知道每种类型的 DB 使用哪个端口号。对于 MySQL,我认为默认端口号应该设置为 3306

于 2015-03-26T05:54:04.943 回答