Jika database template pada PostgreSQL menggunakan SQL_ASCII, saat kita ingin membuat database baru dengan jenis encoding yang lain akan muncul error “new encoding incompatible with the encoding of the template database (SQL_ASCII).”. Untuk memperbaiki masalah ini, kita harus merubah encoding database template itu sendiri menjadi, misalnya UTF8 (Unicode). Encoding SQL_ASCII ini menurut saya tidak berguna karena menurut saya, encoding SQL_ASCII artinya “tidak peduli dengan jenis data dan encoding apapun”.
Cara untuk merubah default encoding, berikut perintah SQL yang harus dijalankan.
Enable connection pada database template0.
1 | postgres=# UPDATE pg_database SET datallowconn = TRUE WHERE datname ='template0'; |
Masuk ke database template0
1 | postgres=# \c template0; |
Ubah column “datistemplate” pada template1 agar kita bisa menghapusnya.
1 | postgres=# UPDATE pg_database SET datistemplate = FALSE WHERE datname = 'template1'; |
Hapus database template1
1 | postgres=# DROP DATABASE template1; |
Buat database template1 yang baru dengan encoding Unicode (UTF8).
1 | postgres=# create database template1 with template = template0 encoding = 'UTF8'; |
Set database baru tersebut sebagai database template.
1 | postgres=# UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template1'; |
Masuk ke database template1
1 | postgres=# \c template1 |
Disable koneksi ke template0
1 | postgres=# UPDATE pg_database SET datallowconn = FALSE WHERE datname = 'template0'; |
Setelah semua selesai, sekarang kita bisa membuat database baru dengan jenis encoding apapun yang kita inginkan