1
我已被雇佣将运行在PHP/PostgreSQL后端服务器上的网站从1台服务器移动到另一台服务器。我从来没有使用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,它实际上是建立在。
如何知道该网站在以前的服务器上工作得很好,如何解决此语法错误?是否有我应该采取的任何调试步骤(编辑代码)来跟踪这个问题?
谢谢。无论如何,这使我走上了正确的轨道。代码本身实际上并不代表postgres.inc.php的第21行或第208行的特定查询,所以现在我的任务是找出产生该查询的内容! –
我认为它总是被保留,因为* right join *或* right()*所以不知道为什么它在另一个安装上工作。 –
我找到了!我没有意识到_acl_right_agg是数据库本身的“函数” - 在这里我正在搜索PHP文件。我在PHP文件上运行了该函数的grep,并发现一些升级脚本将该函数“插入”到数据库中,这让我意识到了事实。现在遇到一个新问题,但这是进步。谢谢。 –