* [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 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 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 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