Amazon RDS for PostgreSQL で照合順序や Ctype を変更する
Posted on
先に結論から書くと、初期に作られるデータベースの照合順序と Ctype は en_US.UTF-8
で固定されているので、削除して作りなおすしかありません。
作りなおす手順
psql コマンドでエンドポイントに接続して、初期状態を確認してみます。 testdb が自分が指定したデータベースです。
$ psql -U rea -h testdb.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com postgres
postgres=> \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | rea | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
rdsadmin | rdsadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 | rdsadmin=CTc/rdsadmin
template0 | rdsadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/rdsadmin +
| | | | | rdsadmin=CTc/rdsadmin
template1 | rea | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/rea +
| | | | | rea=CTc/rea
testdb | rea | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
(5 rows)
先ほども書いたとおり、どちらも en_US.UTF-8
です。日本語環境では C
にしておきたいので DROP DATABASE
して作りなおします。
postgres=> DROP DATABASE testdb;
DROP DATABASE
postgres=> CREATE DATABASE testdb LC_COLLATE 'C' LC_CTYPE 'C' ENCODING 'UTF8' TEMPLATE template0;
CREATE DATABASE
postgres=> \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | rea | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
rdsadmin | rdsadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 | rdsadmin=CTc/rdsadmin
template0 | rdsadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/rdsadmin +
| | | | | rdsadmin=CTc/rdsadmin
template1 | rea | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/rea +
| | | | | rea=CTc/rea
testdb | rea | UTF8 | C | C |
(5 rows)
testdb の照合順序と Ctype が C
になりました。
Parameter Groups から変更できるかなと思いましたが、どうもできないようです。