ฉันจะสร้างฐานข้อมูล Unicode ใน PostgreSQL 8.4 ได้อย่างไร


14

ฉันติดตั้งแพ็คเกจpostgresql-8.4พร้อมตัวเลือกเริ่มต้น ทุกอย่างทำงานได้ดี แต่ฉันไม่สามารถจัดการเพื่อสร้างฐานข้อมูล Unicode ได้:

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

-- This works
createdb test2

ข้อความแสดงข้อผิดพลาด

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

เป็นบิตทำให้งงเพราะ (afaik) ฉันไม่ได้ใช้แม่แบบสำหรับการสร้างฐานข้อมูลใหม่หรือเป็นนัยอ้างอิงถึงฐานข้อมูล "postgres" เริ่มต้นด้วยเหตุผลบางอย่าง?

หรือบางทีฉันอาจขาดการตั้งค่าใน.confไฟล์

คำตอบ:


13

เทมเพลตที่อ้างถึงคือtemplate1ซึ่งใช้โดยนัยหากคุณไม่ได้ระบุเทมเพลตอื่น

วิธีแก้ปัญหาที่เร็วที่สุดคือการที่คุณสร้างฐานข้อมูลของคุณจากแทนโดยใช้template0createdb --template=template0

คุณอาจต้องการดร็อปและกำหนดค่าคลัสเตอร์ทั้งหมดอีกครั้งด้วยโลแคลที่เหมาะสม คุณอาจตั้งระบบปฏิบัติการให้ใช้ภาษา C เป็นค่าเริ่มต้น คุณสามารถกำหนดค่าระบบฐานข้อมูลใหม่ด้วยขั้นตอนเหล่านี้:

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

ใช้สถานที่ที่คุณต้องการแน่นอน


การทิ้งคลัสเตอร์เพื่อแก้ไขสถานที่เป็นสิ่งที่ฉันกำลังมองหาขอบคุณ :)
wildpeaks

มนุษย์หลังจากการขุดจำนวนมากนั่นคือสิ่งที่กำลังมองหาเช่นกัน! ไม่มีสิ่งใดที่ทำให้ PG ทำงานกับโลแคลของ Ubuntu ได้แม้กระทั่งเปลี่ยนไป แต่การสร้างคลัสเตอร์ขึ้นใหม่โดยใช้ UTF8 ก็ทำได้ด้วยวิธีนี้ :) ไชโย!
lucasarruda

คุณอาจต้องการใช้--locale=C.UTF-8(รายการโลแคลที่รองรับในระบบของคุณด้วยlocale -a)
tricasse

3

บางทีคุณอาจต้องกำหนดค่าภาษาก่อนที่จะสร้างคลัสเตอร์

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

ฉันคิดว่ามันใช้งานได้สำหรับฉัน!
alfonx

dpkg-กำหนดค่าต้อง sudo ...
Cerin

-1

ฉันคิดว่าคุณหมายถึง:

createdb test42 --encoding utf-8

ควรทำสิ่งที่คุณต้องการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.