常规JDBC设置

所以我在Debian服务器上设置了MySQL数据库,它可以从phpMyAdmin客户端正常工作。 我目前正在开发一个项目来编写一个Java服务器,该服务器能够通过JDBC连接使用已在此服务器上的MySQL数据库。 我看了很多教程和文档,但所有这些似乎只是解释了如何做客户端代码,但我还没弄明白如何成功打开到服务器的JDBC连接。 就我而言,我相信该程序已正确设置驱动程序,因为它不再崩溃(我只是将我的程序的Java Build Path指向MySQL提供的Connector / J)。 就我的程序而言,这就是它的样子……

import java.sql.*; public class JDBCTest { public static void main(String[] args) { System.out.println("Started!"); try { DriverManager.registerDriver(new com.mysql.jdbc.Driver()); System.out.println("Driver registered. Connecting..."); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/", "root", "password"); System.out.println("Connected!"); conn.close(); } catch (SQLException e) { System.out.println("Error!"); e.printStackTrace(); } } } 

这就是印刷品……

 Started! Driver registered. Connecting... 

好像DriverManager.getConnection(String)就在那里冻结了。 我确定这是服务器的问题,因为当我故意拼错localhost或IP地址时,程序会在20秒内崩溃。 这只是永远挂在那里。

对此文本墙感到抱歉,但我的最后一个问题是,是否有人有任何信息我应该做什么或安装在服务器上以使其工作? 非常感谢!

试试以下:

 public class MySqlDemo { public static void main(String [] args) { java.sql.Connection conn = null; System.out.println("SQL Test"); try { Class.forName("com.mysql.jdbc.Driver").newInstance(); conn = java.sql.DriverManager.getConnection( "jdbc:mysql://localhost:3306/test?user=root&password="); } catch (Exception e) { System.out.println(e); System.exit(0); } System.out.println("Connection established"); } 

您必须提供要连接的架构的名称。 通常,还会添加端口。

这是一个示例连接字符串:

jdbc:mysql://repos.insttech.washington.edu:3306/johndoe?user=johndoe&password=jddb

3306是端口,johndoe的第一个实例是Schema的名称。 johndoe的第二个实例是用户名。

可能是Connector / J库试图使用命名管道连接到MySQL服务器而不是使用TCP / IP,并且由于某种原因,命名管道不可用。 尝试指定端口号。

您可能还想尝试打开Connector / J配置中的一些日志记录,如此处所述。

  1. 尝试将端口号和架构放在那里
  2. 尝试使用某些SQL客户端登录数据库,可能是SQL控制台
  3. 尝试其他驱动程序,可能是一些更新或更老