【问题标题】:Error establishing a database connection - On multiple refresh only建立数据库连接时出错 - 仅在多次刷新时
【发布时间】:2016-12-27 05:14:56
【问题描述】:

我在 WordPress 中运行一个没有错误的网站。但是当我多次刷新页面或站点(使用 F5)时,它会显示建立数据库连接时出错该服务器中的其他网站或所有其他子域也出现故障。

所以我的 WordPress 没有显示任何错误但多次刷新导致建立数据库连接时出错

我该如何解决这个问题。

因为如果有任何错误,如主机名、数据库名等,它根本不应该运行网站,但只有在多次刷新时才会导致问题。

【问题讨论】:

  • 只是猜测。如果正在使用自定义主题,则可能是主题开发人员将数据库凭据硬编码到网站中。如果这样做,网站第一次加载会很好,但第二次加载会失败。我不知道为什么有人会这样编码。无论如何,这就是我会做的。我会停用主题和所有插件,然后一一重新激活所有内容,直到找到导致问题的插件/主题。如果它不是主题或插件,它是带有 WordPress 核心的东西,可以重新安装。
  • @Mr. Me 在该服务器上,我正在运行 4 个 wordpress 网站。这四个都有不同的主题和插件,所有的 seo 包都是通用的。所有 wordpress 网站都出现此问题。 bootstrap中的另一个网站没有任何问题。
  • 是否有任何 php.ini 文件或 user.ini 文件可能会影响 PHP 的配置方式。如果您已经有四个网站在运行,那么在出现此问题之前,您可能已经使用了其中一些网站。当您开始收到这些数据库连接错误时,您在做什么?您是否必须完全重新启动服务器才能使问题消失?

标签: wordpress


【解决方案1】:

简答:

如果网络上的解决方案都无法帮助您,请尝试重新启动数据库服务器或为其分配更多 RAM。


扩展答案:

几个小时前我遇到了同样的问题。突然间,当我在 Wordpress 管理面板中编辑一些内容时。

就我而言,我在本地机器上运行开发数据库服务器。

搜索解决方案,我在站点根目录下新建了一个脚本dbconnection.php,内容如下:

<?php

$link = mysqli_connect('localhost', 'root', '');

if (!$link) {
    die('Could not connect: ' . mysqli_error($link));
}
echo 'Connected successfully';

mysqli_close($link);

每三次(准确地)我用收到消息Could not connect:No input file specified 的脚本刷新页面。

我打开了我的服务器日志 (Apache),这就是我所看到的:

[Thu Feb 06 14:04:51.101731 2020] [:error] [pid 30890:tid 139935881332480] [client 127.0.0.1:42729] FastCGI: server "/usr/lib/cgi-bin/php5.fcgi" stderr: PHP message: PHP Warning: fopen(/www/MY_VIRTUAL_HOST_DOMAIN/wp-content/languages/ru_RU.mo): failed to open stream: Too many open files in /www/MY_VIRTUAL_HOST_DOMAIN/wp-includes/pomo/streams.php on line 148, referer: http://MY_VIRTUAL_HOST_DOMAIN/wp-admin/post.php?post=250&amp;action=edit ...

还有完整的堆栈跟踪。

所以我明白由于某种原因我的数据库无法创建更多连接。

wp-config.php 中定义常量define( WP_ALLOW_REPAIR, true ) 没有帮助。

断开我所有的插件也没有帮助。如果在执行 fopen() 之后任何 PHP 脚本不执行 fclose(),我进行了快速搜索。

没有尝试扩展最大数据库连接限制,因为我想找到一个永久的解决方案。

所以我所做的就是关闭我的虚拟机(我正在使用的开发环境),重新启动我的 PC,再次启动所有内容,并且第二次没有出现问题。

日志中不再有错误。

所以我猜我的虚拟机正好在我向数据库中添加更多数据时耗尽了 RAM。这很不常见,因为我为它分配了很多 RAM(我有 16 GB 中的 11 GB)。

希望这会有所帮助。

【讨论】:

  • @Dharman 说得好,但上面代码 sn-p 的重点是检查数据库连接本身,而不是确切的错误,所以这并不重要
  • 这很重要。您不应该检查连接是否成功。启用错误报告,PHP 会自动告诉你。 mysqli_error($link)当然不会给你任何错误。
  • @Dharman 谢谢你的评论,我明白你想说什么。
猜你喜欢
  • 2016-01-15
  • 2021-05-28
  • 1970-01-01
  • 2015-08-11
  • 2012-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多