Я был нанят для перемещения веб-сайта, который работает на сервере 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 это на самом деле построен на.
Как устранить эту синтаксическую ошибку, зная, что сайт работает отлично на предыдущем сервере? Существуют ли какие-либо шаги отладки, которые я должен предпринять (редактирование кода), чтобы отслеживать это?
Спасибо. Во всяком случае, это наводит меня на правильный путь. Сам код на самом деле не представляет этот конкретный запрос в строке 21 или строке 208 postgres.inc.php, поэтому теперь моя задача - выяснить, что генерирует этот запрос! –
Я думаю, что он всегда был зарезервирован либо из-за * right join *, либо * right() *, поэтому не знаю, почему он работал с другой установкой. –
Я нашел его! Я не понимал, что _acl_right_agg является «функцией» в самой базе данных - здесь я искал файлы PHP. Я запустил grep для этой функции в файлах PHP и обнаружил некоторые сценарии обновления, которые «вставляли» эту функцию в базу данных, что давало мне понять правду. Теперь в новую проблему, но это прогресс. Спасибо. –