Настройка локалей в Linux для PostgreSQL

У меня проблемы с настройкой и запуском конкретной базы данных. Я пытаюсь восстановить дамп postgreSQL, полученный от кого-то другого. Я пробовал несколько методов, но безрезультатно.

  1. Прямо из pg_restore

    pg_restore -C -d postgres --exit-on-error maggie_prod_20111221.dump.sql

  2. Сначала создаем базу данных и табличное пространство

    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? Кроме того, когда я пытаюсь открыть дамп, я вижу много мусорных символов, я предполагаю, что это из-за кодировки, как мне на это посмотреть правильно?

Спасибо за любую помощь.

7
задан The_Denominater 8 February 2011 в 03:05
поделиться