【PostgreSQL】template1の文字コードを変更する

PostgreSQLその他

template1の文字コードを変更する

template1の文字コードを変更するには、直接変更ができません。

そのため一度template1データベースを削除した後、再作成することで変更が可能です。

--template1データベースを再作成(次の1から4をすべて実行)
--1.template1データベースをテンプレートから外す
UPDATE pg_database SET datistemplate = FALSE WHERE datname = 'template1';

--2.template1データベースを削除
DROP DATABASE template1;

--3.template1データベースを作成
CREATE DATABASE template1 WITH TEMPLATE = template0 ENCODING = 文字コード 
LC_COLLATE = 'C' LC_CTYPE = 'C';

--4.template1データベースをテンプレートへ戻す
UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template1';

※『3.template1データベースを作成』の箇所は変更したい文字コードを指定します。

指定できるエンコードはこちらを確認してください。

 

※ 4行一度に実行すると「DROP DATABASE cannot run inside a transaction block」エラーが、

発生するかもしれません。その場合は、1~4を一つずつ実行するとうまくいくと思うので、

試してみて下さい。