И все же про File 'NONEXISTENT/charsets/?.conf' not found

ys

отодвинутый новичок
И все же про File 'NONEXISTENT/charsets/?.conf' not found

mysql 4.0.18:

mysql> SHOW VARIABLES LIKE 'character_set';
| character_set | cp1251 |

mysql> SHOW VARIABLES LIKE 'character_sets';

cp1251 big5 cp1257 croat czech danish dec8 dos estonia euc_kr gb2312 gbk german1 greek hebrew hp8 hungarian koi8_ru koi8_ukr latin1 latin1_de latin2 latin5 sjis swe7 tis620 ujis usa7 win1250 win1251ukr win1251


php PHP 4.3.5
В CLI и apache_mod версии при mysql_connect() выдает:

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

Причем, судя по NEWS это убрали еще в версии 4.2.1:

- Removed warning message about NONEXISTENT character set from mysql_connect() when the server's default character set != latin1. (Mysql Team)

Как я понял это вылезает из ext/mysql/libmysql/charset.c

Может что подкрутить в php.ini надо?

-~{}~ 13.04.04 15:09:

Вообщем посмотрел исходники.

Как и ожидалось функционал для чтения my.cnf есть, но он не задействован.

Сделал проще:
Взял ext/mysql/libmysql/my_config.h

заменил
#define SHAREDIR ...
на
#define SHAREDIR "/usr/local/share/mysql"

перекомпилял - все заработало.
 

icechel

Новичок
А как быть с MySQL для win32 ?

File 'c:\mysql\share\charsets\?.conf' not found (Errcode: 2)
Character set '#14' is not a compiled character set and is not specified in the 'c:\mysql\share\charsets\Index' file

Выдает
 

Falc

Новичок
icechel
Я пытался через my.cnf настроить, так и не вышло, в резултате скопировал в 'c:\mysql\share\charsets\' кодировки :)
 

ys

отодвинутый новичок
Если в сорцах, то можно подогнать переменную в файлике:

ext/mysql/libmysql/config-win.h :
#define SHAREDIR "share"

и перекомпилять...

2 Вариант заставить mysql использовать
'c:\mysql\share для modifiable architecture-independent data
 

ys

отодвинутый новичок
Falc

В 4.5 бесполезно.

1. Не используется my.cnf потому как по умолчанию
mysql->options.my_cnf_file - NULL
mysql->options.my_cnf_group - NULL

и эта часть кода никогда не выполнится:
if (mysql->options.my_cnf_file || mysql->options.my_cnf_group) {
mysql_read_default_options(...);
...
}

2. Тут вместо character-sets-dir указано character-set-dir :

static const char *default_options[]=
{
"port","socket","compress","password","pipe", "timeout", "user",
"init-command", "host", "database", "debug", "return-found-rows", "ssl-key" ,"ssl-cert" ,"ssl-ca" ,"ssl-capath", "character-set-dir", "default-character-set", "interactive-timeout", "connect-timeout", "local-infile", "disable-local-infile",
NullS
};
 

Falc

Новичок
icechel
Видимо клиент глючный, а может и руки кривые, в доке по мускулу написано что должно работать, а не работает.

Вобщем я не долго парился скопировал кодировки и забыл ;)
 

ys

отодвинутый новичок
Falc

Это не проблемма mysql, это проблемма php
 

aeroplan

Guest
Так как всетаки лечится проблема под win32?
 

Rynor

stay hungry
ys большое спасибо за топик, перекомпилил 4.3.7 - помогло.
подскажите нужна ли вообще папка
/usr/local/mysql/share/mysql
или можно ее смело переместить в
/usr/local/share/mysql
?
 

ys

отодвинутый новичок
Rynor

А какое --prefix и --datadir при сборке mysql?
судя по всему --prefix=/usr/local/mysql ?

У меня префикс /usr/local и /usr/local/mysql/share/mysql - просто нет.

Может проще symlink поставить?
 

Balancer

Guest
Re: И все же про File 'NONEXISTENT/charsets/?.conf' not found

Автор оригинала: ys
заменил
#define SHAREDIR ...
на
#define SHAREDIR "/usr/local/share/mysql"
перекомпилял - все заработало.
Не помогает :-/
Все логи забиты
=== cut ===
.File '/usr/local/share/mysql/charsets/?.conf' not found (Errcode: 2)
.Character set '#33' is not a compiled character set and is not specified in the '/usr/local/share/mysql/charsets/Index' file
=== cut ===

33-я кодировка - utf8. В Index.xml она упомянута.
В PHP 4.3.7+MySQL 4.1.2alpha на RH7.3 всё было ок.
Сейчас - PHP 4.3.8+MySQL 4.1.3beta на FC2
:-/
 

ys

отодвинутый новичок
Balancer

$ locate win1251.conf | grep mysql

и поставить нужный путь вместо "/usr/local/share/mysql"
 

Balancer

Guest
>$ locate win1251.conf | grep mysql

Пустой вывод.
При ручном поиске - только cp1251.xml находится.

Впрочем, 33-я кодировка, как я уже писал, это UTF-8.
 

ys

отодвинутый новичок
Опс.
Не увидел "MySQL 4.1.3beta на FC2"
Там вроде как форматы фаликов описания charset's поменялись.
 
Сверху