Я обновляю 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, и все данные были в порядке.