我受雇将一个在 PHP/PostgreSQL 后端上运行的网站从一台服务器迁移到另一台服务器。我从未使用过 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 上。
如果知道该网站在以前的服务器上运行良好,我该如何解决此语法错误?我是否应该采取任何调试步骤(编辑代码)来追踪此问题?
最佳答案
right
是保留字。
它应该在查询中被转义:SELECT ABS("right") ...
关于php - 新服务器 : Troubleshooting PostgreSQL Syntax Error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35653077/