Atualizando o Postgres.app 9.1 para 9.2, obtendo valores de lc_collate não correspondem ao erro

5

Estou atualizando um Postgres.app no meu Macbook Pro (minha máquina de desenvolvimento) e estou recebendo um erro ao executar:

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

O erro que estou recebendo:

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

Como corrijo isso?

Nota: eu costumava ter o Postgres.app rodando 9.1, mas eu o substituí. As instruções que eu deveria ter lido / seguido são: Atualizando o Postgres.app . Assim, a velha lixeira desapareceu, mas ainda tenho o diretório de dados. Em vez disso, baixei o Postgres 9.1 e o instalei em outro lugar para usar o diretório bin para atualizar e mover meus dados para o novo Postgres.

    
por spong 01.08.2013 / 10:43

2 respostas

1

Como estou migrando dados e não me importo com nada de novo no banco de dados, acabei de excluir o que estava lá (é claro que você pode fazer o backup para estar seguro):

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

e criou um novo com o código de idioma en_US, com o seguinte:

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

Depois, executei a atualização:

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

Em seguida, basta executar o analisador e tudo foi bom.

./analyze_new_cluster.sh

Eu me conectei com o pgAdmin3 e todos os dados ficaram como deveriam.

    
por 01.08.2013 / 13:31
3

de link

Initialize the new PostgreSQL cluster

Initialize the new cluster using initdb. Again, use compatible initdb flags that match the old cluster. Many prebuilt installers do this step automatically. There is no need to start the new cluster.

Quando você executar o initdb, verifique se --lc-collate = locale é o mesmo que o antigo db, por exemplo, "en_us"

    
por 01.08.2013 / 13:30