小编TAC*_*EON的帖子

Java/JDBC/MySQL:如何解决为什么DriverManager.getConnection()返回NULL?

我正在尝试解决使用JDBC连接到MySQL数据库的Java应用程序的问题.表面问题是,当连接到有效的数据库时,DriverManager.getConnection有时会返回NULL,而几分钟后它将返回到完全相同的数据库的有效连接.

我正在尝试解决这个问题,但我对Java,JDBC和MySQL相遇的理解相当有限.我一直在做很多关于这方面的研究,但已经撞墙了,不知道从哪里开始.

这是我到目前为止所做的:

  • 在Java端,我已经将代码一直跟踪到DriverManager.getConnection().我已经确定NULL连接来自那里,但我不知道getConnection引擎盖下发生了什么.我一直在努力在网上找到对此的详尽解释.
  • 在MySQL端,我已经确认有很多可用的连接(有时大约有1000个免费连接),所以我知道我没有超过那里的最大连接数.查看日志,我能够确定在我遇到最多问题的时间范围内中断的连接数略多,但我不知道如何确定为什么这些连接被中止(做了MySQL) abort,JDBC,Java应用程序?)我不确定在MySQL端还有什么我需要寻找的东西.
  • 在中间,使用JDBC,我很丢失.我一直在http://dev.mysql.com/doc/refman/5.1/en/connector-j.html上阅读MySQL Connector/J ,但我不确定该信息是否与正在使用的JDBC驱动程序有关. Java的.

任何关于我可以从这里离开的方向都将非常感激.

谢谢!

编辑 - 2月15日,美国中部时间上午10点35分 我为不具体而道歉.此应用程序是一个通常工作正常的生产应用程序.它成功处理了成千上万的连接,没有任何问题,只是这个问题会在白天随机出现,并且会在30秒到5分钟之间持续发生.

这是我一直追溯到DriverManager.getConnection的代码:

var dbConn = DatabaseConnectionFactory.createDatabaseConnection('com.mysql.jdbc.Driver','jdbc:mysql://'+ serverName +':' + port + '/' + database, userName, password);

public static DatabaseConnection createDatabaseConnection(String driver, String address, String username, String password) throws SQLException {
        try {
            Class.forName(driver);
        } catch (Exception e) {
            e.printStackTrace();
        }

        Properties info = new Properties();
        info.setProperty("user", username);
        info.setProperty("password", password);

        // this property should only be set if it's for embedded database
        info.setProperty("shutdown", "true"); …
Run Code Online (Sandbox Code Playgroud)

java mysql jdbc

5
推荐指数
1
解决办法
2万
查看次数

标签 统计

java ×1

jdbc ×1

mysql ×1