【问题标题】:Cannot create PoolableConnectionFactory无法创建 PoolableConnectionFactory
【发布时间】:2011-07-09 09:20:57
【问题描述】:

有什么问题?无法连接数据库?

   org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (
            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.)

【问题讨论】:

  • 请改为发布 full 堆栈跟踪。如果没有堆栈跟踪,我们无法理解导致此错误的 root 原因是什么。
  • 在 Linux 中,我必须通过键入“service mysqld start”来启动服务

标签: java mysql hibernate


【解决方案1】:

这是问题的实际原因:

原因: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: 通讯链路故障

您有一个数据库通信链接问题。确保您的应用程序可以通过网络访问您的数据库(并且防火墙没有阻止您的数据库的端口)。

【讨论】:

  • 为了后代,当我在开发环境中重新启动机器并且我的数据库没有运行时,我每个月左右都会遇到这个问题。我希望这有助于其他人犯同样愚蠢的错误。
【解决方案2】:

我在源 URL 中遇到了与 localhost 相同的问题。 我用127.0.0.1而不是localhost解决了。

【讨论】:

    【解决方案3】:

    这是网络问题。检查您的数据库连接。 您的数据库连接链接、用户名和密码错误或您的数据库服务器已停止。

    【讨论】:

      【解决方案4】:

      这里是由 avast 杀毒软件引起的。您可以禁用 avast 防火墙,只让 windows 防火墙处于活动状态。

      【讨论】:

        【解决方案5】:

        当我使用 chef 在 VirtualBox VM 上设置 tomcat 和 mysql 服务器时,我遇到了同样的问题。

        在这种情况下,我认为真正的问题是 VirtualBox 似乎将非本地主机地址分配给 eth0 之类的

        [vagrant@localhost webapps]$ /sbin/ifconfig
        eth0      Link encap:Ethernet  HWaddr 08:00:27:60:FC:47
              inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
        

        然后使用10.0.2.15作为mysql服务器绑定地址的厨师食谱的自动检测功能。

        所以在我的情况下,为厨师食谱的节点参数指定绑定地址解决问题。我希望这些信息可以帮助人们使用 Chef 和 vagrant。

        {
          "name" : "db",
          "default_attributes" : {
           "mysql" : {
            "bind_address" : "localhost"
            ...
           }
        

        【讨论】:

          【解决方案6】:

          这个特定问题也可能出现在 localhost 中。我们不能排除这是因为网络问题或互联网连接问题。即使所有数据库连接属性都正确,也会出现此问题。

          我在使用主机名时遇到了同样的问题。而是使用 ip 地址。会解决的。

          【讨论】:

            【解决方案7】:

            这是因为防火墙阻止了数据库连接。

            禁用防火墙,然后再次尝试运行该程序。它对我有用......:D

            【讨论】:

            • 或者我只是将端口从 3307 更改为 3306。
            【解决方案8】:

            我在 pom.xml 中更改了驱动版本并帮助了我

            <dependency>
                <groupId>org.postgresql</groupId>
                <artifactId>postgresql</artifactId>
                <version>42.2.2</version>
            </dependency>
            

            【讨论】:

              【解决方案9】:

              在windows的下面路径中转到my.ini文件 C:\ProgramData\MySQL\MySQL Server 8.0\my.ini

              并评论以下行

              #bind-address=127.0.0.1
              

              然后重启 MySQL 服务器并连接。

              然后您就可以从其他 IP 地址/机器连接到 MySQL。

              【讨论】:

                【解决方案10】:

                在我的情况下,解决方案是删除属性

                validationQuery="select 1"
                

                来自(Derby DB)资源标签。

                【讨论】:

                  【解决方案11】:

                  问题可能是由于太多用户同时访问数据库。要么增加可以同时访问数据库的用户数量,要么踢出现有用户(或应用程序)。使用“显示进程列表;”在主机数据库中检查已连接的用户;

                  我遇到了另一个原因,catalina.policy 文件,可以禁止访问特定的 IP/PORT

                  【讨论】:

                  • 无法连接的原因有很多。
                  【解决方案12】:

                  试试

                  jdbc:sqlserver://hostname:port;databaseName=TEST
                  

                  在端口号之前添加冒号而不是逗号后它对我有用

                  【讨论】:

                    【解决方案13】:

                    如果你使用apache tomcat 8.0版本,而不是它,使用tomcat 7.0 我曾尝试 localhost 到 127.0.0.1 并关闭防火墙但不工作,但使用 tomcat 7.0 现在工作

                    【讨论】:

                      【解决方案14】:

                      我遇到了类似的错误。将 JDBC URL 更改为使用 127.0.0.1 而不是 localhost 会有所帮助。

                      还曾尝试更改 catalina.policy 文件中的条目,但这没有帮助。 我更改的条目是 - java.net.SocketPermission

                      【讨论】:

                        猜你喜欢
                        • 2020-09-29
                        • 1970-01-01
                        • 2021-07-08
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2015-10-15
                        • 2014-04-19
                        相关资源
                        最近更新 更多