MySQL: различия между версиями
Нет описания правки |
(викификация) |
||
Строка 1: | Строка 1: | ||
[[ | [[Категория:Admin]] | ||
{{stub}} | {{stub}} | ||
=== О кодировках в MySQL 5.x === | === О кодировках в MySQL 5.x === | ||
В ALT | В ALT Linux кодировка, передаваемая через параметр -C в mysqld, задаётся через CHSET в /etc/sysconfig/mysqld, либо определяется по системной локали. | ||
Это --character-set-server — кодировка, используемая '''сервером''' по умолчанию. | |||
Это --character-set- | |||
Как нужно настроить сервер, чтобы по умолчанию кодировка была cp1251, но это можно было переопределять на utf8? | Как нужно настроить сервер, чтобы по умолчанию кодировка была cp1251, но это можно было переопределять на utf8? | ||
Кодировку и таблицу сортировки, используемые по умолчанию в сервере, лучше задавать в my.cnf: | Кодировку и таблицу сортировки, используемые по умолчанию в сервере, лучше задавать в my.cnf: | ||
character_set_server = utf8 | character_set_server = utf8 | ||
collation_server = utf8_general_ci | collation_server = utf8_general_ci | ||
Для клиентов (например, команды mysql) кодировка указывается в секции [client] файла my.cnf: | Для клиентов (например, команды mysql) кодировка указывается в секции [client] файла my.cnf: | ||
[client] | [client] | ||
default-character-set=cp1251 | default-character-set=cp1251 | ||
При открытии соединения с базой нужно указывать кодировку, в которой клиент будет работать с базой. Это можно сделать строкой | При открытии соединения с базой нужно указывать кодировку, в которой клиент будет работать с базой. Это можно сделать строкой | ||
init-connect="SET NAMES cp1251" | init-connect="SET NAMES cp1251" | ||
в my.cnf. Команда set names устанавливает при подсоединении такие переменные как set_client, set_result, collaction_client | в my.cnf. Команда set names устанавливает при подсоединении такие переменные как set_client, set_result, collaction_client, что позволяет серверу корректно воспринимать запросы и возвращать ответы. | ||
Обратите внимание, что имена (таблиц и полей) хранятся в сервере в кодировке utf8 и это неизменяемо. | Обратите внимание, что имена (таблиц и полей) хранятся в сервере в кодировке utf8 и это неизменяемо. | ||
''Что насчёт их кодировки в запросе?'' | ''Что насчёт их кодировки в запросе?'' | ||
=== Ссылки === | |||
[http://linuxgangster.org/modules.php?name=Content&file=printout&id=8 Оптимизация настроек MySQL + Apache для нагруженного сервера] |
Версия от 15:48, 24 августа 2008
О кодировках в MySQL 5.x
В ALT Linux кодировка, передаваемая через параметр -C в mysqld, задаётся через CHSET в /etc/sysconfig/mysqld, либо определяется по системной локали. Это --character-set-server — кодировка, используемая сервером по умолчанию. Как нужно настроить сервер, чтобы по умолчанию кодировка была cp1251, но это можно было переопределять на utf8?
Кодировку и таблицу сортировки, используемые по умолчанию в сервере, лучше задавать в my.cnf:
character_set_server = utf8 collation_server = utf8_general_ci
Для клиентов (например, команды mysql) кодировка указывается в секции [client] файла my.cnf:
[client] default-character-set=cp1251
При открытии соединения с базой нужно указывать кодировку, в которой клиент будет работать с базой. Это можно сделать строкой
init-connect="SET NAMES cp1251"
в my.cnf. Команда set names устанавливает при подсоединении такие переменные как set_client, set_result, collaction_client, что позволяет серверу корректно воспринимать запросы и возвращать ответы.
Обратите внимание, что имена (таблиц и полей) хранятся в сервере в кодировке utf8 и это неизменяемо. Что насчёт их кодировки в запросе?
Ссылки
Оптимизация настроек MySQL + Apache для нагруженного сервера