При включении русской кодировке в мускле возникла ошибка...

kdk

TeaM PHPClub
При включении русской кодировке в мускле возникла ошибка...

Вообщем Тема такая:

есть сервер на нем Red Hat, apache, mysql 4.0.18 и т.д.

Возникла необходимость научить мускул работать с рускими данными ну там сортировка и все такое.

Прописал в /etc/my.cnf строки:
character-sets-dir=/usr/share/mysql/charsets
default-character=cp1251

Все вроде заработало как надо.
Но вот в чем ЖОПА.

Через веб все путем, но если запустить скрипт через командную строку ну например:
php -f /home/user/test.php
то при ображении к базе вылезает ошибка:
File 'NONEXISTENT/charsets/?.conf' not found (Errcode: 2)
Character set '#14' is not a compiled character set and is not specified in the 'NONEXISTENT/charsets/Index' file

Причем скрипт отрабатывает нормально, и с базой делает все что нужно.

Кто-нибудь знает где грабли?
 

Profic

just Profic (PHP5 BetaTeam)
php слинкован не с системной libmysqlclient, а со своей - встроенной, и, соответственно, не знает, где искать эти самые кодировки
Правка my.cnf не поможет, т.к. php этот файл не трогает.

Да кстати эта же ошибка должна появляться и при работе с апачем, но в еррор-логе апача.
 

kdk

TeaM PHPClub
да есть такое дело и в логе апача эта фигня мелькает...
чего делать то?
Как проблему решить?

Куда ему эти кодировки подпихнуть?
 

Profic

just Profic (PHP5 BetaTeam)
сказал же уже (а оказывается не сказал, а только немекнул :)) пересобрать php или экстеншн mysql с системной либой, а не встроенной. т.е. --with-mysql=/path/to/mysql
 

kdk

TeaM PHPClub
УРА я нашел как решается проблема.

Эти строки в my.cnf нужно прописывать именно для клиента.
т.е.

[client]
character-sets-dir=/usr/share/mysql/charsets
default-character=cp1251


Описание тут:
http://dev.mysql.com/doc/mysql/ru/Character_sets.html
 

Profic

just Profic (PHP5 BetaTeam)
И чего оно работает?
Значит изначально php был собран с системной либой. Только она старая, чтоли. Я видел такое только с 3.23.х... (Хотя если честно ничего свежее под юниксами не собирал :()
 

kdk

TeaM PHPClub
кстати при попытке обращаться к mysqladmin он ругается мол не известная переменная default-character=cp1251
и ничего делать не дает...

так что все-таки что-то не до конца работает...
но из командной строки php скрипты пашут и в логе апача вроде новых багов не видно...
 

Profic

just Profic (PHP5 BetaTeam)
Угу. Есть такое. Сам напоролся. Пролечил прописыванием в [client] только character-sets-dir, а default-character - в [mysql], но у тебя тогда возникнет проблема в том, как обызвается клиент php, и обзывается ли он вообще как нибудь.

Потому имхо проще оставить все как есть :)
 

kdk

TeaM PHPClub
что же ты раньше не написал я 2 часа сегодня убил на подбор того что куда вписать чтобы оно заработало как надо ;)
 

kdk

TeaM PHPClub
блин после обновления php вся эта история опять повторяться начала :(
И то решение которое работало раньше теперь не пашет ;(
 
Сверху