Pertama, jawaban Daniel adalah pilihan yang benar dan aman.
Untuk kasus khusus perubahan dari SQL_ASCII ke sesuatu yang lain, Anda dapat menipu dan cukup menyodok katalog pg_database untuk menetapkan kembali pengkodean database. Ini mengasumsikan Anda telah menyimpan karakter non-ASCII apa pun dalam pengkodean yang diharapkan (atau bahwa Anda belum pernah menggunakan karakter non-ASCII).
Kemudian Anda dapat melakukan:
update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = 'thedb'
Ini tidak akan mengubah susunan database, hanya bagaimana byte yang dikodekan diubah menjadi karakter (jadi sekarang length('£123')
akan mengembalikan 4 bukannya 5). Jika database menggunakan susunan 'C', seharusnya tidak ada perubahan untuk memesan string ASCII. Anda mungkin perlu membangun kembali indeks yang berisi karakter non-ASCII.
Pembatas peringatan. Membuang dan memuat ulang menyediakan cara untuk memeriksa konten database Anda sebenarnya dalam penyandian yang Anda harapkan, dan ini tidak. Dan jika ternyata Anda memiliki beberapa data yang salah dikodekan dalam database, penyelamatan akan menjadi sulit. Jadi, jika Anda bisa, buang dan inisialisasi ulang.