Проблема возникла после установки 5 мускула с 4 таких проблем не было. В конфиге стоит кодировка cp1251, при вызове консоли пишет следующую ошибку:
D:\Server\MySQL\bin>mysql -uroot mysql: Character set 'cp1251' is not a compiled character set and is not specifi ed in the 'C:\mysql\\share\charsets\Index.xml' file
С кодировкой latin такого не происходит. Вероятно мускул не видит путь к конфиге cp1251 и где-то надо его поправить. В гугле искал проблема неновая, но решений не встретил.
*tyler* пишет: in the 'C:\mysql\\share\charsets\Index.xml
не ошибка в конфиге? Обрати внимание на два слэша в пути. Или это ошибка? В конфиге выставлял кодировку в секциях [server]? В виде default-charset-set=cp1251? Можеь выставить ещё init-connect='SET NAME cp1251'. Вариант - пересобрать ручками MySQL с поддержкой опций: --with-charset=cp1251 --with-collation=cp1251_general_ci --with-extra-charset=all
А вот это - http://dev.mysql.com/doc/refman/5.0/en/problems-with-character-sets.html читал? Пробовал на практике? Как я понимаю, у тебя проблема с файлом Index.xml, который содержит все поддерживаемые кодировки. Глянул у себя на сервере (FC5, не Винда) - у меня внутри подобной директории есть файлы поддерживаемых кодировок в виде cp1251.conf и Index, который как раз и содержит список кодировок. И файл README с содержимым: -------------- This directory holds configuration files which allow MySQL to work with different character sets. It contains:
*.conf Each conf file contains four tables which describe character types, lower- and upper-case equivalencies and sorting orders for the character values in the set.
Index The Index file lists all of the available charset configurations.
Each charset is paired with a number. The number is stored IN THE DATABASE TABLE FILES and must not be changed. Always add new character sets to the end of the list, so that the numbers of the other character sets will not be changed.
Compiled in or configuration file? When should a character set be compiled in to MySQL's string library (libmystrings), and when should it be placed in a configuration file?
If the character set requires the strcoll functions or is a multi-byte character set, it MUST be compiled in to the string library. If it does not require these functions, it should be placed in a configuration file.
If the character set uses any one of the strcoll functions, it must define all of them. Likewise, if the set uses one of the multi-byte functions, it must define them all. See the manual for more information on how to add a complex character set to MySQL.
Syntax of configuration files The syntax is very simple. Comments start with a '#' character and proceed to the end of the line. Words are separated by arbitrary amounts of whitespace.
For the character set configuration files, every word must be a number in hexadecimal format. The ctype array takes up the first 257 words; the to_lower, to_upper and sort_order arrays take up 256 words each after that.
------------------------- В вышеприведённой ссылке есть совет, как получить подобный индекс.
При попытке заполнить пару записей в БД выдало : mysql> source insertmen.sql; ERROR 1406 (22001): Data too long for column 'fam' at row 1 Что-то с поддержкой кириллицы не так здесь.
Код
mysql> describe tablemens;
+--------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+----------------+
| id_men | smallint(6) | NO | PRI | | auto_increment |
| fam | char(10) | YES | | | |
| name | char(10) | YES | | | |
| otch | char(10) | YES | | | |
| dr | date | YES | | | |
+--------+-------------+------+-----+---------+----------------+
Строки из my.ini: =========================================================== [client] port=3307 character-sets-dir=c:\Programm Files\MySQL\MySQL Server 5.0\share\charsets default-character-set=cp1251
[mysql] default-character-set=latin1 ============================================================ Что не так?
Таблица была создана так - create table tablemens ( id_men smallint auto_increment primary key, fam char(10) , name char(10), otch char(10), dr date ) DEFAULT CHARSET=cp1251;
В курсе, что есть 4 типа кодировок? Кодировка сервера, кодировка базы (тут же - отдельная кодировка таблицы), кодировка сопоставления и кодировка соединения (клиент-сервер). Кодировка базы у тебя (как видно) latin1, кодировка таблицы - cp1251. А вот кодировка соединения - непонятна. Один вариант - вписать в конфиг - SET NAMES cp1251 (а может тоже latin1). Другой вариант - выставить кодировку сервера в utf8 (что более правильно, на мой взгляд) - попробовать опять запрос. Если не поможет - то выставить ещё и set names utf8. И на всяк случай почитай вот это - http://bugs.mysql.com/bug.php?id=18908 Запрос, кстати, тоже не мешало бы привести.