У меня проблемы с настройкой и запуском конкретной базы данных. Я пытаюсь восстановить дамп postgreSQL, полученный от кого-то другого. Я пробовал несколько методов, но безрезультатно.
Прямо из pg_restore
pg_restore -C -d postgres --exit-on-error maggie_prod_20111221.dump.sql
Сначала создаем базу данных и табличное пространство
createdb -T template0 maggieprod -E LATIN1
SQL: CREATE TABLESPACE magdat OWNER maggie LOCATION '/where / magdat';
pg_restore -v -d template1 maggie_prod_20110121.dump.sql
Используя первый метод, я получаю следующее:
pg_restore: [архиватор (db)] Ошибка при ОБРАБОТКЕ TOC:
pg_restore: [архиватор ( db)] Ошибка из записи 2308 оглавления; 1262 16386 БАЗА ДАННЫХ maggieprod postgres
pg_restore: [архиватор (db)] не смог выполнить запрос: ОШИБКА: кодировка LATIN1 не соответствует языку en_CA.utf8
ПОДРОБНЕЕ: Выбранный параметр LC_CTYPE требует кодировки UTF8.
Команда была: CREATE DATABASE maggieprod WITH TEMPLATE = template0 ENCODING = 'LATIN1' TABLESPACE = magdat;
И используя второй, когда я пытаюсь создать базу данных, я получаю:
createdb: создание базы данных завершилось неудачно: ОШИБКА: кодирование LATIN1 не соответствует языку en_CA.utf8
ПОДРОБНЕЕ: Выбранный параметр LC_CTYPE требует кодировки UTF8.
Получается, что я не могу создать базу данных кодировки LATIN1? Это почему? Я новичок в языковых стандартах и кодировках и не очень разбираюсь в них. Я просто знаю, что дамп был сделан из базы данных LATIN1.
Результат locale
:
LANG = en_CA.utf8
LC_CTYPE = "en_CA.utf8"
LC_NUMERIC = "en_CA.utf8"
LC_TIME = "en_CA.utf8"
LC_COLLATE = "en_CA.utf8"
LC_MONETARY = "en_CA.utf8"
LC_MESSAGES = "en_CA.utf8"
LC_PAPER = "en_CA.utf8"
LC_NAME = "en_CA.utf8"
LC_ADDRESS = "en_CA.utf8"
LC_TELEPHONE = "en_CA.utf8"
LC_MEASUREMENT = "en_CA.utf8"
LC_IDENTIFICATION = "en_CA.utf8"
LC_ALL =
И вывод locale -a
:
C
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZW.utf8
POSIX
Я не вижу LATIN1 во второй команде? Если да, то как мне его добавить? Правильно ли я предполагаю, что мне нужно изменить языковой стандарт на моем компьютере? Если да, то есть ли способ сделать это только для postgreSQL? Кроме того, когда я пытаюсь открыть дамп, я вижу много мусорных символов, я предполагаю, что это из-за кодировки, как мне на это посмотреть правильно?
Спасибо за любую помощь.