Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Проблема с кодировкой в MySQL 5.1.52 (mrdamage) 11/11/2010 - 10:38:15
      Re: Проблема с кодировкой в MySQL 5.1.52 (Елена) 14/11/2010 - 00:30:43



From: mrdamage - 11/11/2010 - 10:38:15
Subject:Проблема с кодировкой в MySQL 5.1.52
-----------------
Друзья, помогите, пожалуйста, советом!

У меня есть две машины - CentOS 5.5 с MySQL 5.1.52 и openSUSE с MySQL 5.1.49.

На обоих машинах выполняется один и тот же скрипт, который пишет в базу данных некоторый русский текст:

mysql_query('INSERT INTO mytest (c) VALUES ("тест");');
(для базы, таблицы и поля выставлено при создании utf8)

В my.cnf обоих серверов баз данных прописаны следующие директивы для задания кодировки:
===
[client]
default-character-set = utf8

[mysqld]
default-character-set = utf8
default-collation = utf8_general_ci
===

Соответственно, show variables показывает:

| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |

Но при этом в версии MySQL 5.1.52 выполнение скрипта приводит к нечитаемой кодировке:

+--------------------+
| c |
+--------------------+
| тест |
+--------------------+

При этом в версии 5.1.49 всё в порядке - будет выведено слово 'тест'.

Если в скрипт добавить запрос "SET NAMES utf8", то добавление будет происходить одинаково корректно в обоих версиях. Но получается, что придётся обновлять все скрипты?

Какие есть альтернативные варианты?

Ещё в процессе поиска проблемы в логах MySQL 5.1.49 нашёл интересные предупреждения:
101111 1:00:23 [Warning] '--default-character-set' is deprecated and will be removed in a future release. Please use '--character-set-server' instead.
101111 1:00:23 [Warning] '--default-collation' is deprecated and will be removed in a future release. Please use '--collation-server' instead.

Однако изменение в my.cnf старых директив на:
character-set-server = utf8
collation-server = utf8_general_ci
не решило проблему. Show variables при этом не поменялся в части кодировок - т.е. новые директивы работает.

Складывается впечатление, что разработчики MySQL, избавляясь от default-character-set, как-то не очень правильно удалили его как из секции сервера, так и из секции клиента. Но второе почему-то до сих пор вляет на вывод show variables, а реально не работает.

Кто-нибудь сталкивался с этой проблемой?



[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
37686



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |