Bagaimana cara membuat database Unicode di PostgreSQL 8.4?


14

Saya menginstal paket postgresql-8.4 dengan opsi default. Semuanya bekerja dengan baik, namun sepertinya saya tidak bisa membuat database unicode:

-- This doesn't work
createdb test1 --encoding UNICODE

-- This works
createdb test2

Pesan kesalahan,

createdb: database creation failed: ERROR:  new encoding (UTF8) is incompatible with the encoding of the template database (SQL_ASCII) 

agak membingungkan karena (afaik) Saya tidak menggunakan template untuk membuat db baru, atau apakah secara implisit merujuk ke database "postgres" default karena suatu alasan?

Atau mungkin saya melewatkan pengaturan dalam .conffile?

Jawaban:


13

Template yang dimaksud adalah template1, yang secara implisit digunakan jika Anda tidak menentukan template lain.

Solusi tercepat adalah Anda membuat basis data template0, menggunakan createdb --template=template0.

Anda mungkin ingin menjatuhkan dan menginisialisasi ulang seluruh cluster Anda dengan lokal yang lebih masuk akal. Anda mungkin telah mengatur sistem operasi Anda untuk menggunakan C locale secara default. Anda dapat menginisialisasi ulang sistem basis data dengan langkah-langkah ini:

sudo pg_dropcluster --stop 8.4 main
sudo pg_createcluster --locale=en_US.utf8 --start 8.4 main

Gunakan lokal apa pun yang Anda suka, tentu saja.


Menjatuhkan gugus untuk mengubah lokal adalah persis apa yang saya cari, terima kasih :)
wildpeaks

Man, setelah banyak menggali, itu juga yang dicari! Tidak ada lagi yang bisa membuat PG berfungsi dengan lokal Ubuntu, bahkan mengubahnya. Tetapi menciptakan kembali cluster dengan UTF8 berhasil :). Bersulang!
lucasarruda

Anda mungkin ingin menggunakan --locale=C.UTF-8(daftar lokal yang didukung pada sistem Anda dengan locale -a).
tricasse

3

mungkin Anda perlu mengonfigurasi lokal sebelum membuat cluster

export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
locale-gen en_US.UTF-8
dpkg-reconfigure locales

Saya pikir itu berhasil untuk saya!
alfonx

dpkg-reconfigure membutuhkan sudo ...
Cerin

-1

Saya pikir maksud Anda:

createdb test42 --encoding utf-8

Itu harus melakukan apa yang Anda inginkan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.