Postgresql

如何創建具有不同編碼的 PostgreSQL 數據庫?

  • April 4, 2021

我想創建一個以德語儲存數據的新數據庫(即帶有重音符號的文本等)。因此,我嘗試使用以下 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 上,我能夠通過首先使用asLATIN1初始化數據庫來創建具有編碼的數據庫。閱讀有關本地化和可用字元集支持的更多資訊。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

引用自:https://dba.stackexchange.com/questions/198872