5

我将安装移至另一台服务器。我更新了 var/ 目录中的配置文件并提供了横幅,但管理界面无法正常工作。

我得到错误:

发生致命错误 OpenX 无法连接到数据库。因此,无法使用管理员界面

我清理了 var 中的缓存目录,但后来我得到了 PHP Fatal error: Call to undefined method MDB2_Error::quoteIdentifier() in /[path]/opx/lib/OA/Upgrade/VersionController.php on line 50

我不知道这是哪个版本,但它看起来至少有 2 年历史了。

我不知道是否有任何特殊的缓存?

对此的任何帮助将不胜感激。

4

2 回答 2

3

注意,.. 如果您在不同的服务器上拥有数据库,那么 openx 如果您将主机设置为数据库服务器的 ip 和端口.. 只要您没有设置就没有关系protocol=protocol!!!

这是迄今为止我见过的最愚蠢的事情,不需要协议配置,因为如果您设置“localhost”,php 总是使用套接字。

于 2013-09-03T00:55:55.183 回答
1

确切地说出这里出了什么问题并不容易,但可以做出一个很好的猜测:

正如我们从错误消息中看到的那样,您的代码中有一个对象没有实现该方法quoteIdentifier()

这主要有两个可能的原因:我们正在调用相同 Class 实例的旧版本或新版本,它没有实现该方法。也许是因为它已被弃用或谁知道。或者对象根本不是预期的类型。

瞧,如果我们寻找一个MDB2实现此方法的相关类,那就是 class MDB2。不是MDB2_Error!所以现在我们知道了错误的原因,是时候推测根本原因了。

使用 MDB2连接到数据库的工作大致如下:

$mdb2 =& MDB2::connect('pgsql://usr:pw@localhost/dbnam');
if (PEAR::isError($mdb2)) {
    die($mdb2->getMessage());
}

它在那里。我们可以看到 $mdb2 实际上可以是 MDB2_Error 类型,以防由于某种原因连接出错。这就是原因:您的代码由于某种原因无法连接到数据库。因此,下一个明显的步骤应该是检查您的数据库用户是否具有正确的权限并使用正确的密码。我 100% 确定您的管理后端没有使用正确的凭据。

于 2013-09-02T11:59:48.633 回答