php - 新服务器 : Troubleshooting PostgreSQL Syntax Error

标签 php postgresql

我受雇将一个在 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/

相关文章:

python - 在 Python 中通过 SSH 隧道连接到 PostgreSQL 数据库

sql - 创建从 VIEW 中选择的 VIEW

php - Apache 不提供 php 文件

javascript - 为什么 php 变量不能与我的 Javascript/Laravel-5 Google map 代码一起使用?

php - 使用 php preg_replace_callback - 但替换整个字符串而不是每个子字符串

php - 如何获得一定半径的地方

java - GWT + Postgres 教程

Postgresql - 类似于 JSON 字段中的查询

sql多次选择和加入行

php - 是否有用于 Javascript 或 PHP 的解析表达式语法 (PEG) 库?