* [sisyphus] снова вопрос о сортировке в постгресе @ 2007-12-13 10:38 Serge 2007-12-13 10:57 ` Alex Gorbachenko 0 siblings, 1 reply; 9+ messages in thread From: Serge @ 2007-12-13 10:38 UTC (permalink / raw) To: ALT Linux Sisyphus discussion list Доброго дня. Надеюсь на помощь сообщества: система старый сизиф, редкообновляемый. стоит постгрес 8.1.5 OS locale koi8 база в утф. сортировка русских по алфавиту "едет" где копнуть, куда глядеть? плз. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [sisyphus] снова вопрос о сортировке в постгресе 2007-12-13 10:38 [sisyphus] снова вопрос о сортировке в постгресе Serge @ 2007-12-13 10:57 ` Alex Gorbachenko 2007-12-13 11:29 ` Serge 2007-12-13 12:01 ` Serge 0 siblings, 2 replies; 9+ messages in thread From: Alex Gorbachenko @ 2007-12-13 10:57 UTC (permalink / raw) To: sisyphus [-- Attachment #1: Type: text/plain, Size: 279 bytes --] On Thu, 13 Dec 2007 12:38:29 +0200 Serge wrote: >OS locale koi8 >база в утф. сортировка русских по алфавиту "едет" > >где копнуть, куда глядеть? плз. вывод от: psql template1 postgres -c 'show all' | grep lc_ покажите. -- np: Dark Lunacy - The Farewell Song [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [sisyphus] снова вопрос о сортировке в постгресе 2007-12-13 10:57 ` Alex Gorbachenko @ 2007-12-13 11:29 ` Serge 2007-12-13 12:07 ` Alex Gorbachenko 2007-12-13 12:01 ` Serge 1 sibling, 1 reply; 9+ messages in thread From: Serge @ 2007-12-13 11:29 UTC (permalink / raw) To: ALT Linux Sisyphus discussions Alex Gorbachenko пишет: > вывод от: > psql template1 postgres -c 'show all' | grep lc_ > > покажите. > lc_collate | ru_RU.KOI8-R | Shows the collation order locale. lc_ctype | ru_RU.KOI8-R | Shows the character classification and case conversion locale. lc_messages | ru_RU.KOI8-R | Sets the language in which messages are displayed. lc_monetary | ru_RU.KOI8-R | Sets the locale for formatting monetary amounts. lc_numeric | ru_RU.KOI8-R | Sets the locale for formatting numbers. lc_time | ru_RU.KOI8-R | Sets the locale for formatting date and time values. ы. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [sisyphus] снова вопрос о сортировке в постгресе 2007-12-13 11:29 ` Serge @ 2007-12-13 12:07 ` Alex Gorbachenko 0 siblings, 0 replies; 9+ messages in thread From: Alex Gorbachenko @ 2007-12-13 12:07 UTC (permalink / raw) To: sisyphus [-- Attachment #1: Type: text/plain, Size: 2403 bytes --] On Thu, 13 Dec 2007 13:29:04 +0200 Serge wrote: >lc_collate ru_RU.KOI8-R >lc_ctype ru_RU.KOI8-R ну вот, собственно, и причина засора. LC_COLLATE и LC_CTYPE задаются при инициализации кластера, после чего их изменить нельзя. как следствие, если initdb был выполнен с локалью KOI, получаем проблемы с сортировками и работой ф-ций upper()/lower() во всех БД кластера, кодировка которых отлична от той, с которой кластер инициализировали. существует два способа решения данной проблемы. прервый. сдампить базу, остановить постгрес, удалить содержимое каталога с данными (/var/lib/pgsql/data/*, предварительно сохранив конфиги из него). затем выполнить: echo "LANG=ru_RU.UTF-8" > /var/lib/pgsql/data/.18n поднять постгрес, создать базу, залить в неё содержимое дампа. это официально рекомендованый способ. способ второй. официально его вообще не существует, и ни в одной рассылке по postgresql вам его никогда не расскажут :) сразу предупрежу, что я сам так делать тоже не рекомендую, потому что вероятность потери данных велика. итак. 1. Отключить сеть в postgresql; 2. service postgresql restart. Это позволит сбросить все сетевые соединения и корректно завершить все транзакции; 3. service postgresql stop; 4. cp -a /var/lib/pgsql-root/var/lib/pgsql/data/global/ /root - спасаем служебную информацию; 5. subst "s,KOI8-R,UTF8,g" /var/lib/pgsql-root/var/lib/pgsql/data/global/pg_control - изменяем значения LC_COLLATE и LC_CTYPE 6. su -l postgres -s /bin/bash - получаем shell с правами суперпользователя БД. 7. pg_resetxlog -n /var/lib/pgsql/data - запоминаем значения «Latest checkpoint's NextXID» и «Latest checkpoint's NextOID». разумнее этот этап делать до этапа 5 :) 8. cp -a /var/lib/pgsql/data/pg_xlog /var/lib/pgsql/data/pg_xlog.old - на случай, если вам нужны старые логи транзакций. этап необязательный. 9. pg_resetxlog -o «Latest checkpoint's NextOID» -x «Latest checkpoint's NextXID» -f /var/lib/pgsql/data - чиним служебный файл, который искорёжили на этапе 5. после исправления выведется диагностика, из которой можно будет понять, насколько успешно прошёл процесс. 10. если всё хорошо, и pg_controldata /var/lib/pgsql/data не выдаёт ругани, то можно поднять postgresql. если плохо, то нужно вернуть на место каталоги global и pg_xlog. -- np: As I Lay Dying - Repeating yersterday [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [sisyphus] снова вопрос о сортировке в постгресе 2007-12-13 10:57 ` Alex Gorbachenko 2007-12-13 11:29 ` Serge @ 2007-12-13 12:01 ` Serge 2007-12-13 12:10 ` Alex Gorbachenko 1 sibling, 1 reply; 9+ messages in thread From: Serge @ 2007-12-13 12:01 UTC (permalink / raw) To: ALT Linux Sisyphus discussions вот еще обнаружил в /var/lib/pgsql/data/postgresql.conf # These settings are initialized by initdb -- they might be changed lc_messages = 'ru_RU.KOI8-R' # locale for system error message # strings lc_monetary = 'ru_RU.KOI8-R' # locale for monetary formatting lc_numeric = 'ru_RU.KOI8-R' # locale for number formatting lc_time = 'ru_RU.KOI8-R' # locale for time formatting cat /var/lib/pgsql/initdb.i18n export LANG LC_ALL LC_CTYPE LC_COLLATE LC_NUMERIC LC_CTYPE LC_TIME export LANG LC_ALL LC_CTYPE LC_COLLATE LC_NUMERIC LC_CTYPE LC_TIME cat /etc/sysconfig/i18n LANG=ru_RU.UTF-8 SUPPORTED=ru_RU.UTF-8 на основании этого, что мне необходимо изменить для решения проблемы? я так понял, исправить на утф и реинитить бд? бакапить при этом надо? и если имеются разнородные базы (часть в кои, часть в утф) не полетит ли сортировка к примеру на других бд, отличных от утф? ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [sisyphus] снова вопрос о сортировке в постгресе 2007-12-13 12:01 ` Serge @ 2007-12-13 12:10 ` Alex Gorbachenko 2007-12-13 12:11 ` Serge 0 siblings, 1 reply; 9+ messages in thread From: Alex Gorbachenko @ 2007-12-13 12:10 UTC (permalink / raw) To: sisyphus [-- Attachment #1: Type: text/plain, Size: 532 bytes --] On Thu, 13 Dec 2007 14:01:50 +0200 Serge wrote: >на основании этого, что мне необходимо изменить для решения проблемы? >я так понял, исправить на утф и реинитить бд? да. >бакапить при этом надо? да. >и если имеются разнородные базы (часть в кои, часть в утф) не полетит >ли сортировка к примеру на других бд, отличных от утф? полетит. в случае с постгресом, для поддержки разных кодировок для баз, разумно держать n контейнеров с n кодировками. иначе никак. -- np: As I Lay Dying - Repeating yersterday [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [sisyphus] снова вопрос о сортировке в постгресе 2007-12-13 12:10 ` Alex Gorbachenko @ 2007-12-13 12:11 ` Serge 2007-12-13 12:16 ` Alex Gorbachenko 0 siblings, 1 reply; 9+ messages in thread From: Serge @ 2007-12-13 12:11 UTC (permalink / raw) To: ALT Linux Sisyphus discussions Alex Gorbachenko пишет: > полетит. в случае с постгресом, для поддержки разных кодировок для баз, > разумно держать n контейнеров с n кодировками. иначе никак. > Не просветите насчет контейнеров? Что это и как кушать? это vps? или что то особенное для постгри? ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [sisyphus] снова вопрос о сортировке в постгресе 2007-12-13 12:11 ` Serge @ 2007-12-13 12:16 ` Alex Gorbachenko 2007-12-13 12:18 ` Serge 0 siblings, 1 reply; 9+ messages in thread From: Alex Gorbachenko @ 2007-12-13 12:16 UTC (permalink / raw) To: sisyphus [-- Attachment #1: Type: text/plain, Size: 212 bytes --] On Thu, 13 Dec 2007 14:11:26 +0200 Serge wrote: >Не просветите насчет контейнеров? Что это и как кушать? >это vps? или что то особенное для постгри? VPS -- np: As I Lay Dying - Repeating yersterday [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [sisyphus] снова вопрос о сортировке в постгресе 2007-12-13 12:16 ` Alex Gorbachenko @ 2007-12-13 12:18 ` Serge 0 siblings, 0 replies; 9+ messages in thread From: Serge @ 2007-12-13 12:18 UTC (permalink / raw) To: ALT Linux Sisyphus discussions Alex Gorbachenko пишет: > On Thu, 13 Dec 2007 14:11:26 +0200 > Serge wrote: > > >> Не просветите насчет контейнеров? Что это и как кушать? >> это vps? или что то особенное для постгри? >> > > VPS > Спасибо большое за ликбез. ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2007-12-13 12:18 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2007-12-13 10:38 [sisyphus] снова вопрос о сортировке в постгресе Serge 2007-12-13 10:57 ` Alex Gorbachenko 2007-12-13 11:29 ` Serge 2007-12-13 12:07 ` Alex Gorbachenko 2007-12-13 12:01 ` Serge 2007-12-13 12:10 ` Alex Gorbachenko 2007-12-13 12:11 ` Serge 2007-12-13 12:16 ` Alex Gorbachenko 2007-12-13 12:18 ` Serge
ALT Linux Sisyphus discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/sisyphus/0 sisyphus/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 sisyphus sisyphus/ http://lore.altlinux.org/sisyphus \ sisyphus@altlinux.ru sisyphus@altlinux.org sisyphus@lists.altlinux.org sisyphus@lists.altlinux.ru sisyphus@lists.altlinux.com sisyphus@linuxteam.iplabs.ru sisyphus@list.linux-os.ru public-inbox-index sisyphus Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.sisyphus AGPL code for this site: git clone https://public-inbox.org/public-inbox.git