我将安装移到了另一台服务器上。我更新了var /目录中的configfile并提供了横幅,但是管理界面无法正常工作。
我收到错误:
发生致命错误OpenX无法连接到数据库。因为 这不可能使用管理员界面
我清理了var中的缓存目录,但后来我得到了
PHP Fatal error: Call to undefined method MDB2_Error::quoteIdentifier() in /[path]/opx/lib/OA/Upgrade/VersionController.php on line 50
我不知道这是哪个版本,但它看起来至少有2年了。
是否有任何特殊的缓存我不知道?
对此的任何帮助都将非常感激。
答案 0 :(得分:3)
请注意,如果你在不同的服务器上有数据库,那么openx并不重要,如果你将主机设置为数据库服务器和端口的IP ...只要你没有设置{{1} !!!!
这是迄今为止我见过的最愚蠢的事情,不需要协议配置,因为如果设置“localhost”,php总是使用套接字。
答案 1 :(得分:1)
要弄清楚这里究竟出了什么问题并不容易,但人们可以做出很好的猜测:
正如我们从错误消息中看到的那样,代码中有一个对象没有实现方法quoteIdentifier()
。
这主要有两个可能的原因:我们要么调用不实现该方法的相同Class实例的较旧版本或较新版本。也许是因为它被弃用或谁知道。或者对象根本不是预期的类型。
瞧,如果我们寻找一个实现此方法的MDB2
相关类,那就是类MDB2
。不是MDB2_Error
!所以现在我们知道错误的原因,是时候推测根本原因了。
$mdb2 =& MDB2::connect('pgsql://usr:pw@localhost/dbnam');
if (PEAR::isError($mdb2)) {
die($mdb2->getMessage());
}
就是这样。我们可以看到$ mdb2实际上可以是MDB2_Error类型,以防由于某种原因连接出错。这就是原因:您的代码由于某种原因无法连接到数据库。因此,下一个明显的步骤应该是检查您的db用户是否具有正确的权限并使用正确的密码。我100%确定您的管理员后端没有使用正确的凭据。