新服务器:PostgreSQL语法错误疑难解答

时间:2016-02-26 13:32:09

标签: php postgresql

我被雇用将在PHP / PostgreSQL后端运行的网站从1台服务器移动到另一台服务器。我从未使用过PostgreSQL,并认为这将是一项非常简单的任务。我错了。

我成功地解决了一些与权限和权限被拒绝相关的问题。

我目前的问题困扰了我。当我访问主页时,我收到500错误。

新服务器正在运行PostgreSQL 9.2.14,我不知道PostgreSQL的旧版本是什么版本。我只收到文件&数据库转储 - 我从未访问过旧服务器本身。

检查错误日志,我看到了:

[26-Feb-2016 08:06:45 America/New_York] PHP Fatal error:  Uncaught exception 'DbQueryException' with message 'ERROR:  syntax error at or near ")" LINE 1: SELECT ABS(right)
                        ^ QUERY:  SELECT ABS(right) CONTEXT:  PL/pgSQL function _acl_right_agg(integer[],acl_entity_rights) line 21 at assignment' in /home/user/public_html/includes/lib/db/postgres.inc.php:208 Stack trace:
#0 /home/user/public_html/includes/lib/db/base.inc.php(439): PostgresDB->query('\n              ...', 3)
#1 /home/user/public_html/includes/wt-navigation.php(3831): BaseDB->getScalar('\n              ...', '-2', 'anonymous','pub...')
#2 /home/user/public_html/includes/wt-navigation.php(3913): NavCache::lookupNodeId('-1')
#3 /home/user/public_html/includes/wt-node-types.php(112): NavCache::lookupEdgeName('/', Object(NavNodeTop))
#4 /home/user/public_html/includes/wt-navigation.php(3499): NavNodeRoot->_loadProperties()
#5 /home/user/public_html/init/site.inc.php(22): require_once('/home/user... in /home/user/public_html/includes/lib/db/postgres.inc.php on line 208

代码没有被评论,也没有说明它实际构建的CMS(如果有的话)。

如果知道网站在以前的服务器上工作得很好,我该如何解决这个语法错误?是否有任何调试步骤(编辑代码)来跟踪它?

1 个答案:

答案 0 :(得分:1)

right是保留字。

应该在查询中对其进行转义:SELECT ABS("right") ...