【问题标题】:MySQL database in java, too many connectionsjava中的MySQL数据库,连接太多
【发布时间】:2014-04-15 21:27:44
【问题描述】:

我目前正在用 java 编写一个程序,我经常使用 JDBC 驱动程序从 MySQL 数据库中获取数据。 起初,我每次运行程序进行测试时都尝试关闭连接,但在该行出现错误。我离开了 'connection.close()' 行并且它起作用了,这在当时对我来说已经足够好了。

不幸的是,这适得其反,因为现在我无法再运行该程序了。它给出了以下错误。

Data source rejected estabilishment of connection, message from server: "Too many connections" 

老实说,我不知道如何解决这个问题。 Visual Studio 中的另一个相关应用程序在我每次运行时都会重建数据库,所以我认为这不是问题。我在我的 java 编辑器 Netbeans 中删除了数据库,然后重新导入它,但这也没有解决它。我的谷歌搜索技巧也让我失望了,即使是关于 stackoverflow 的问题似乎也没有奏效。

任何帮助将不胜感激

【问题讨论】:

  • 关闭你的连接.
  • 关于如何“重置”错误的不同说明:确保没有后台进程在打开连接运行(连接将在 程序终止时关闭,但后台程序仍在运行),如果一切都失败了,强制让 MySQL 弹出它的连接(我相信这意味着 "restart" 在 MySQL 术语中)。
  • connection.close() 抛出的错误是什么?
  • 作为一种习惯,如果不需要打开连接,则应关闭连接。顺便检查一下你的 mysql 配置,看看你有多少并发连接。
  • 是的,如果我知道如何关闭连接,我们就不会在这里了吧?我尝试在 MySQL 中使用 SHOW PROCESSLIST 命令,但我在那里只看到了 1 个连接。另外我想我已经迫不及待想尝试最后一个选项,转到我计算机的“服务”并重新启动 MySQL 服务?

标签: java mysql database jdbc


【解决方案1】:

您可以使用连接池。
在数据库内存中维护的数据库连接缓存,以便在数据库接收到未来的数据请求时可以重复使用这些连接。
连接池用于提高在数据库上执行命令的性能。
请参考:http://en.wikipedia.org/wiki/Connection_pool

【讨论】:

    【解决方案2】:

    由于您的程序从未关闭连接,它们将保持打开状态并用完 MySQL 服务器的连接限制。即使重置数据库也不一定会弹出或终止与 MySQL 服务的连接,因为这些连接附加到服务器,而不是数据库文件。我只需要重启 MySQL 服务器,它将弹出并关闭所有当前连接,正如 user2864740 建议的那样。

    为了解决您每次尝试关闭连接时程序抛出错误的问题,就像 Matt K 所说的那样,您需要发布您遇到的错误。您当然需要关闭程序中的连接。

    【讨论】:

    • 嗯,这似乎并没有起到作用。我重新启动了 MySQL 服务,但仍然出现错误。我将尝试调试程序,但由于某种原因,我的 java 编辑器似乎对此表现得很奇怪:/
    猜你喜欢
    • 2019-09-13
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 1970-01-01
    • 2017-12-27
    相关资源
    最近更新 更多