PostgreSQLをインストール後、自動で作成されたデーターベースのエンコーディングとロケールがja_JP.UTF-8(OS設定のロケール)になってしまうので、エンコーディングをUTF-8、照合順序(ソート順)をCに設定し直す。
$ uname -a
Linux raspberrypi 4.9.80-v7+ #1098 SMP Fri Mar 9 19:11:42 GMT 2018 armv7l GNU/Linux
###PostgreSQLをインストール
$ sudo apt-get install postgresql
###postgresユーザー(OSユーザー)のパスワード設定
$ passwd postgres
###データを削除
データを削除する前にサービスを停止しておく。
$ sudo service postgresql stop
ディレクトリごとデータを削除してしまう。
データディレクトリの場所は/etc/postgresql/9.6/main/postgresql.confファイルのdata_directoryで設定されている。
postgresql.conf
#------------------------------------------------------------------------------
# FILE LOCATIONS
#------------------------------------------------------------------------------
# The default values of these variables are driven from the -D command-line
# option or PGDATA environment variable, represented here as ConfigDir.
data_directory = '/var/lib/postgresql/9.6/main' # use data in another directory
# (change requires restart)
削除!
$ sudo rm -rf /var/lib/postgresql/9.6/main
###データベースの再作成
postgresユーザーでログイン
$ su - postgres
データベースを、エンコーディングUTF-8、ロケールなしで初期化する。
$ PGDATA=/var/lib/postgresql/9.6/main /usr/lib/postgresql/9.6/bin/initdb --no-locale -E UTF-8
$ exit
サービスを起動
$ sudo service postgresql start
確認
$ su - postgres
$ psql
postgres=# \l
データベース一覧
名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権
-----------+----------+------------------+----------+-------------------+-----------------------
postgres | postgres | UTF8 | C | C |
template0 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
(3 行)
ユーザーの作成
$ createuser -P <ユーザー名>