JDBC连接sourceforge上的MySQL数据库
问题描述:
如何指定了JDBC连接到MySQL在典型的线JDBC连接sourceforge上的MySQL数据库
DriverManager.getConnection("jdbc:mysql://mysql-o.sourceforge.net:4040/o582544_oopp", "user", "pass");
我要求从SourceForge远程访问,但使用指定的端口4040我没有能够连接到它。
以下是错误:
Driver Loaded.
Exception in thread "main" 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:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
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:2333)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2370)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2154)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
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 java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at TestMySQL.main(TestMySQL.java:17)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at java.net.Socket.connect(Socket.java:478)
at java.net.Socket.<init>(Socket.java:375)
at java.net.Socket.<init>(Socket.java:218)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:257)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:294)
... 15 more
Process completed.
答
URL语法在这里给出:
http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-configuration-properties.html
我认为你有其他问题。
MySQL的默认端口是3306,我不知道你在哪里得到了端口号,或者你正在使用的用户名和密码,但该消息暗示对我说,你是能够使连接,但MySQL的拒绝你访问。
的MySQL权限授予来自特定IP地址的访问。我无法想象,源锻造已要求您的IP地址,所以我猜,你的访问应该是匿名的,只读的。
答
我没有看到在这意味着您的请求被它使远程服务器堆栈跟踪任何东西,所以我觉得你有某种形式的防火墙问题。尝试使用telnet,看看你正在做一个连接:telnet mysql-o.sourceforge.net 4040
即使你的网络是通过让你从服务器获取一些文本。 3306是MySQL的常用端口,因此您可能也想尝试一下。您需要先解决这部分问题,然后再解决任何许可问题。