我被雇用将在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(如果有的话)。
如果知道网站在以前的服务器上工作得很好,我该如何解决这个语法错误?是否有任何调试步骤(编辑代码)来跟踪它?
答案 0 :(得分:1)
right
是保留字。
应该在查询中对其进行转义:SELECT ABS("right") ...