Синтаксические ошибки при импорте файла pg_dump sql

Я пытаюсь восстановить файл SQL, который я создал из pg_dump, но пытаюсь загрузить дамп на новый хост, и я получаю много синтаксических ошибок, как показано ниже:

 psql:subscription_dump.sql:3741: ERROR:  syntax error at or near "We"
 LINE 1: We need to see if there's anything else needing
 doing. ...
         ^

Он показывает некоторые данные из базы данных. Почему данные, присутствующие в базе данных, вызывают синтаксические ошибки при импорте?

psql "service=subscription_odyssey" -f subscription_dump.sql

После совета по #postgressql я изменил свою команду на следующее:

psql "service=subscription_odyssey" -f subscription_dump.sql -v ON_ERROR_STOP=1

Вот первая зарегистрированная ошибка:

psql "service=subscription_odyssey" -f subscription_dump.sql -v ON_ERROR_STOP=1
SET
psql:subscription_dump.sql:6: ERROR:  unrecognized configuration parameter "lock_timeout"

person ComputerLocus    schedule 24.06.2014    source источник


Ответы (1)


Вы пытаетесь восстановить дамп из 9.3 или 9.4beta (поскольку 9.3 - это когда была введена lock_timeout) на более старую версию, вероятно, 9.0 или старше - до изменения на standard_conforming_strings. Таким образом, он будет пытаться интерпретировать обратную косую черту в строках как экранирование, где-то экранировать кавычки и теряться, пытаясь анализировать строки как SQL.

Возможно, вам повезет больше с дампом пользовательского формата (pg_dump -Fc), но лучше всего будет сделать новый дамп сервера 9.3, используя pg_dump из вашей старой версии. Если у вас больше нет доступа к серверу 9.3, временно установите 9.3, чтобы восстановить на него дамп.

person Craig Ringer    schedule 24.06.2014