Я зарылся и ничего не понимаю(
Есть БД, создана была в ASCII, но через pg_dumpall я переделывал её и в utf8 и в koi8r:
pg_dumpall -Uuser >> dump initdb -E UTF8 psql -f dump
Но что бы я ни делал, при попытке сделать регистронезависимый поиск ничего не выходит:
SELECT "todoes_note"."id", "todoes_note"."timestamp","todoes_note"."note", "todoes_note"."author_id" FROM "todoes_note" WHERE UPPER("todoes_note"."note"::text) LIKE UPPER ('%Духом%') LIMIT 21;
и
SELECT "todoes_note"."id", "todoes_note"."timestamp","todoes_note"."note", "todoes_note"."author_id" FROM "todoes_note" WHERE UPPER("todoes_note"."note"::text) LIKE UPPER ('%духом%') LIMIT 21;
выдают разные результаты(
Что надо сделать? Хотя бы куда смотреть?
Postgresql 9.2.4, FreeBSD 9.0
Собирал из портов с настройками по умолчанию
PostgreSQL работает не с
PostgreSQL работает не с собственной, а с системной локалью. Поэтому чтобы всё это работало, просто необходима корректная поддержка UTF-8 в вашей FreeBSD. Если таковой поддержки нет - работать не будет.
то есть всё остальное точно
то есть всё остальное точно правильно? А почему с koi8r такая же байда?
У вас вот байда, а у меня на
У вас вот байда, а у меня на Linux'е никакой байды нету.
Поискал по сайту, народ уже спрашивал на эту тему, вот что нашлось:
http://blog.lexa.ru/2008/02/27/freebsd_ru_ruutf8_lc_collate.html
возможно поможет
попробовал, а толку никакого.
попробовал, а толку никакого. Переходить на linux советуете? Какой тогда лучше? Нужен только для postgresql под виртуалкой
Не то, что советую
Не то, что советую переходить, просто в FreeBSD бывают какие-то непонятки с локализацией, которых в Linux нет.
Подозреваю, что непонятки для меня, который не очень-то хорошо знает FreeBSD, но тем не менее.
Только что проверил. Хотя и на моей CentOS 6 на работе стоит PostgreSQL 8.4.13, но вот такое работает на ура:
tmp=# select * from filmname;
_id | _filmname | _description | _genrename
-----+-----------------+-------------------+------------
1 | Бегущий человек | Фильм со Шварцем | боевик
2 | Кобра | Фильм со Сталлоне | боевик
(2 строки)
tmp=# select * from filmname where UPPER(_description) like '%ШВАРЦ%';
_id | _filmname | _description | _genrename
-----+-----------------+------------------+------------
1 | Бегущий человек | Фильм со Шварцем | боевик
Советую CentOS 6.последний. Во-первых, это серьёзный серверный дистрибутив, который делается на основе RHEL6. Во-вторых, к нему есть множество сторонних репозиториев. В третьих, у этого дистрибутива долгий многолетний цикл поддержки.
Да, и разумеется, что на версии 8.4.13 никто работать не заставляет. См. сюда:
http://yum.postgresql.org/
И ещё. Нет смысла городить нечего с UPPER или LOWER, когда вместо LIKE можно использовать ILIKE
Это не я, это
Это не я, это django)
Спасибо, попробую CentOS