Làm cách nào để tạo cơ sở dữ liệu Unicode trong PostgreQuery 8.4?


14

Tôi đã cài đặt gói postgresql-8.4 với các tùy chọn mặc định. Mọi thứ đều hoạt động tốt, tuy nhiên tôi dường như không thể quản lý để tạo cơ sở dữ liệu unicode:

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

-- This works
createdb test2

Thông báo lỗi,

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

là một chút khó hiểu bởi vì (afaik) Tôi không sử dụng một khuôn mẫu để tạo db mới, hoặc nó hoàn toàn đề cập đến cơ sở dữ liệu "postgres" mặc định vì một số lý do?

Hoặc có thể tôi đang thiếu một thiết lập trong một .conftập tin?

Câu trả lời:


13

Mẫu mà nó đang đề cập là template1, được sử dụng ngầm nếu bạn không chỉ định một mẫu khác.

Cách giải quyết nhanh nhất là template0thay vào đó, bạn tạo cơ sở dữ liệu của mình bằng cách sử dụng createdb --template=template0.

Bạn có thể muốn thả và sắp xếp lại toàn bộ cụm của bạn với một miền địa phương hợp lý hơn. Bạn có thể đã cài đặt hệ điều hành của mình để sử dụng ngôn ngữ C theo mặc định. Bạn có thể khởi tạo lại hệ thống cơ sở dữ liệu bằng các bước sau:

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

Sử dụng bất cứ địa điểm nào bạn thích, tất nhiên.


Bỏ cụm để sửa đổi miền địa phương chính xác là những gì tôi đang tìm kiếm, cảm ơn :)
wildpeaks

Man, sau khi đào rất nhiều, đó là những gì a đang tìm kiếm quá! Không có gì khác có thể khiến PG làm việc với ngôn ngữ Ubuntu, thậm chí thay đổi nó. Nhưng việc tạo lại cụm với UTF8 đã thực hiện thủ thuật :). Chúc mừng!
lucasarruda

Bạn có thể muốn sử dụng --locale=C.UTF-8(liệt kê các địa điểm được hỗ trợ trên hệ thống của bạn với locale -a).
tricasse

3

có thể bạn cần cấu hình miền địa phương trước để tạo cụm

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

Tôi nghĩ rằng nó đã làm việc cho tôi!
alfonx

dpkg-cấu hình lại yêu cầu sudo ...
Cerin

-1

Tôi nghĩ bạn muốn nói:

createdb test42 --encoding utf-8

Điều đó nên làm những gì bạn muốn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.