Назад | Перейти на главную страницу

Обновление Postgres.app с 9.1 до 9.2, получение значений lc_collate не соответствует ошибке

Я обновляю Postgres.app на своем Macbook Pro (моя машина для разработки) и получаю сообщение об ошибке при запуске:

pg_upgrade -b /Users/foo/Library/PostgreSQL/9.1/bin/ 
           -B /Applications/Postgres.app/Contents/MacOS/bin/ 
           -d /Users/foo/Library/Application\ Support/Postgres/var-9.1/ 
           -D /Users/foo/Library/Application\ Support/Postgres/var

Я получаю ошибку:

lc_collate cluster values do not match:  old "en_US", new "en_US.UTF-8"

Как мне это исправить?

Примечание: Раньше, у меня был Postgres.app работает 9.1, но я ее перезаписал. Направления, которые я должен был прочитать / следовать: Обновление Postgres.app. Итак, старая корзина исчезла, но у меня все еще есть каталог данных. Вместо этого я загрузил Postgres 9.1 и установил его в другом месте, чтобы использовать каталог bin для обновления и переноса данных в новый Postgres.

из http://www.postgresql.org/docs/9.0/static/pgupgrade.html

Инициализируйте новый кластер PostgreSQL

Инициализируйте новый кластер с помощью initdb. Опять же, используйте совместимые флаги initdb, соответствующие старому кластеру. Многие готовые установщики делают этот шаг автоматически. Нет необходимости запускать новый кластер.

При запуске initdb убедитесь, что --lc-collate = locale совпадает со старой базой данных, например "en_us"

Поскольку я переношу данные и не забочусь ни о чем новом в базе данных, я просто удалил все, что там было (конечно, вы можете сделать резервную копию, чтобы быть в безопасности):

rm -rf ~/Library/Application\ Support/Postgres/var

и создал новый с locale en_US, со следующим:

initdb --locale=en_US -D ~/Library/Application\ Support/Postgres/var

Затем я просто запустил обновление:

pg_upgrade -b ~/Library/PostgreSQL/9.1/bin/ 
           -B /Applications/Postgres.app/Contents/MacOS/bin/ 
           -d ~/Library/Application\ Support/Postgres/var-9.1/ 
           -D ~/Library/Application\ Support/Postgres/var

Затем просто запустите анализатор и все будет хорошо.

./analyze_new_cluster.sh

Я подключился к pgAdmin3, и все данные были в порядке.