PostgreSQL utf-8 @ Debian

PostgreSQL utf-8 @ Debian

W zasadzie to sciąga dla mnie :) jednak może komuś się przydać info jak zmusić postgresa to obsługi utf-8, domyślnie kodowanie po zainstalowaniu z paczki jest sql ascii.

W pierwszej kolejności warto ustawić polskie locale oraz strefe czasową. Poniższe polecenia wyświetlą okna dialogowe, gdzie wybieramy pl_PL.UTF-8 jako locale oraz strefe czasową jako Europe/Warsaw.

dpkg-reconfigure locales
dpkg-reconfigure tzdata

Czas zaaktualizować system i zainstalować wymagane oprogramowanie (nie wymagane dla postgresa, taka notatka dla mnie:)):

apt-get update
apt-get upgrade
apt-get install vim-nox mc build-essential flex bison yasm imagemagick tcl-tclreadline php5-cli mplayer ffmpeg strace libreadline-dev zlib1g-dev debian-keyring g++-multilib automake autoconf autogen php-pear bzip2 zip unzip  gnu-standards tcl autoconf2.13 autoconf-archive libtool gettext tcl-dev daemontools daemontools-run htop iotop libxml2 libxml2-dev libxslt-dev libssl-dev automake1.9 gdb

Instalujemy postgresql oraz pakiet dev wymagany do kompilacji Aol-a. Po instalacji zatrzymujemy postgresa i ponownie tworzymy katalog danych już z opcja utf-8.

apt-get install postgresql-9.1 postgresql-server-dev-9.1
/etc/init.d/postgresql stop
mv /var/lib/postgresql/9.1/main /var/lib/postgresql/9.1/main.tmp
mkdir /var/lib/postgresql/9.1/main
chown postgres:postgres /var/lib/postgresql/9.1/main
su - postgres
/usr/lib/postgresql/9.1/bin/initdb --pgdata="/var/lib/postgresql/9.1/main" -E 'UTF-8' --lc-collate='en_US.UTF-8' --lc-ctype='en_US.UTF-8'
mv /var/lib/postgresql/9.1/main.tmp/server.key /var/lib/postgresql/9.1/main/server.key
mv /var/lib/postgresql/9.1/main.tmp/server.crt /var/lib/postgresql/9.1/main/server.crt
rm -rf /var/lib/postgresql/9.1/main
/etc/init.d/postgresql start

Teraz możemy zrobić już baze z kodowaniem utf-8.

createdb -Upostgres -E unicode nazwa_bazy