Postgresql
如何創建具有不同編碼的 PostgreSQL 數據庫?
我想創建一個以德語儲存數據的新數據庫(即帶有重音符號的文本等)。因此,我嘗試使用以下 SQL 創建它:
CREATE DATABASE testdb WITH ENCODING='LATIN1' OWNER=postgres TEMPLATE=template0 CONNECTION LIMIT=-1;
當我在我的 Windows 開發機器上執行它時,我收到以下錯誤消息:
錯誤:編碼“LATIN1”與區域設置“English_United States.1252”不匹配詳細資訊:選擇的 LC_CTYPE 設置需要編碼“WIN1252”。
在我的 Linux 伺服器上,我收到以下錯誤消息:
錯誤:編碼“LATIN1”與區域設置“en_US.UTF-8”不匹配詳細資訊:所選的 LC_CTYPE 設置需要編碼“UTF8”。
我需要做什麼來創建可以正確儲存德語文本的數據庫?
在 Linux 上,我能夠通過首先使用as
LATIN1
初始化數據庫來創建具有編碼的數據庫。閱讀有關本地化和可用字元集支持的更多資訊。initdb``\usr\pgsql-10\bin``initdb --encoding=en_US.iso88591
然後使用 - 重新啟動服務
systemctl restart postgresql-10
這將使用新編碼重新初始化模板數據庫 template0 和 template1,然後您可以使用創建數據庫
createdb <dbname>
希望這可以幫助。
使用以下網站選擇您的角色,然後使用範例:
http://pgdocptbr.sourceforge.net/pg82/multibyte.html#CHARSET-TABLE
postgres=# CREATE DATABASE database_name WITH TABLESPACE tablespace_name TEMPLATE = template0 OWNER = database_user ENCODING 'WIN1252' LC_CTYPE = 'Portuguese_Brazil.1252' LC_COLLATE = 'Portuguese_Brazil.1252'; CREATE DATABASE