2012-02-13 41 views
3

我使用Vagrant和Chef在我的虛擬機上安裝了postgres,當我嘗試創建數據庫時,我一直收到此錯誤。不知道去哪裏看。用戶'my_user'創建時沒有問題。Postgres在嘗試創建新數據庫時抱怨編碼

CREATE DATABASE db_mydb OWNER my_user ENCODING 'UTF8' TEMPLATE template1; 
createdb: database creation failed: ERROR: encoding UTF8 does not match locale en_US 
DETAIL: The chosen LC_CTYPE setting requires encoding LATIN1. 

的VM最初設定爲en_US,而我把它更新到en_US.utf8

回答

2

當你創建PostgreSQL服務器,默認的編碼是從您所在區域服用。如果您稍後將區域設置更改爲UTF8,則服務器仍將初始化爲latin1。

如果您還沒有任何數據,最好刪除並重新創建服務器。我不確定如何在你的設置上做到這一點,但基本上它應該是關閉它,刪除數據庫文件並使用initdb重新創建它們的情況。或者卸載/重新安裝軟件包。

如果您不想重建服務器,則可以使用TEMPLATE template0創建數據庫,該數據庫允許您指定與服務器默認設置不同的編碼。

+0

你知道我應該如何刪除Ubuntu上的db文件嗎?我想它被放置在/var/lib/postgresql/9.1/main ...但有一堆。我沒有任何重要的數據,它是一個新的postgres安裝 – 2012-11-29 23:14:04

+0

@ Lucas-luky-N。在Debian上,我們使用'pg_dropcluster'和'pg_createcluster'來管理這些:我認爲它在Ubuntu上是一樣的。 – araqnid 2012-11-30 10:29:57

相關問題