Hari ini saya sedang melakukan pengecekan salah satu modul pekerjaan saya, yakni penyimpanan data image (binary/bytea) ke dalam database PostgreSQL (saya menggunakan PostgreSQL 9.1.6 pada Ubuntu 12.04).
Ternyata setelah dilakukan pengujian retrieval data gambar menjadi kacau, file image hasil generate dari database tidak sesuai dengan image asli yang datanya disimpan ke dalam database.
Setelah googling, saya menemukan petunjuk bahwa hal ini terjadi karena default output data binary pada PostgreSQL 9.1.6 mempunyai format hex.
Untuk mengatasi hal tersebut kita bisa melakukan alter pada database yang bersangkutan dengan perintah sebagai berikut (perintah dilakukan pada psql prompt bukan bash prompt linux/Ubuntu):
Namun kekurangan perintah tersebut adalah kita harus melakukan alter pada semua database yang kita miliki.
Hal ini tentu sangat merepotkan bila database yang ada jumlahnya cukup banyak.
Untuk mengatasi hal ini kita bisa mengedit konfigurasi PostgreSQL (postgresql.conf) dengan cara sebagai berikut:
lokasi file tergantung pada cara sahabat menginstall PostgreSQL dan silahkan pilih text editor yang anda sukai (di sini saya menggunakan nano).
Saya melakukan instalasi PostgreSQL dari Ubuntu Repository, sehingga secara default file postgresql.conf terletak pada folder /etc/postgresql/[versi]/main.
dari editor nano kemudian lakukan pencarian kata 'bytea_output' dengan cara menekan kombinasi tombol CTRL-W :
Di situ terlihat bahwa konfigurasi bytea_output masih dicomment.
Untuk meng-uncomment, hapus karakter '#' dan ubah kondisi 'hex' menjadi 'escape'
Kemudian simpan perubahan file postgresql.conf.
Setelah itu restart server PostgreSQL dengan menjalankan perintah berikut:
Setelah restart server seharusnya file hasil generate dari database sudah sesuai dengan file aslinya.
Ternyata setelah dilakukan pengujian retrieval data gambar menjadi kacau, file image hasil generate dari database tidak sesuai dengan image asli yang datanya disimpan ke dalam database.
Setelah googling, saya menemukan petunjuk bahwa hal ini terjadi karena default output data binary pada PostgreSQL 9.1.6 mempunyai format hex.
Untuk mengatasi hal tersebut kita bisa melakukan alter pada database yang bersangkutan dengan perintah sebagai berikut (perintah dilakukan pada psql prompt bukan bash prompt linux/Ubuntu):
database=> ALTER DATABASE database SET bytea_output TO 'escape';
Namun kekurangan perintah tersebut adalah kita harus melakukan alter pada semua database yang kita miliki.
Hal ini tentu sangat merepotkan bila database yang ada jumlahnya cukup banyak.
Untuk mengatasi hal ini kita bisa mengedit konfigurasi PostgreSQL (postgresql.conf) dengan cara sebagai berikut:
sudo nano /etc/postgresql/9.1/main/postgresql.conf
lokasi file tergantung pada cara sahabat menginstall PostgreSQL dan silahkan pilih text editor yang anda sukai (di sini saya menggunakan nano).
Saya melakukan instalasi PostgreSQL dari Ubuntu Repository, sehingga secara default file postgresql.conf terletak pada folder /etc/postgresql/[versi]/main.
dari editor nano kemudian lakukan pencarian kata 'bytea_output' dengan cara menekan kombinasi tombol CTRL-W :
#bytea_output = 'hex' # hex, escape
Di situ terlihat bahwa konfigurasi bytea_output masih dicomment.
Untuk meng-uncomment, hapus karakter '#' dan ubah kondisi 'hex' menjadi 'escape'
bytea_output = 'escape' # hex, escape
Kemudian simpan perubahan file postgresql.conf.
Setelah itu restart server PostgreSQL dengan menjalankan perintah berikut:
sudo /etc/init.d/postgresql restart
Setelah restart server seharusnya file hasil generate dari database sudah sesuai dengan file aslinya.
Comments
Post a Comment