powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Странное с кодировкой: сломал голову
3 сообщений из 3, страница 1 из 1
Странное с кодировкой: сломал голову
    #38802472
Алекс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет тебе, о непобедимый All!

Случился у меня неприятный глюк, по которому я сломал голову. С кодировкой. Нет-нет, не торопись тыкать носом в FAQ, сперва послушай...

Есть пара MySQL-серверов, связанных репликацией. (Мастер на Винде, слейв на Фре, но это вряд ли имеет значение.) Везде и всюду на обеих серверах выставлена character_set = cp1251 и collation = cp1251_general_ci (как именно - поясню ниже). До поры до времени я не знал никаких проблем. Данные у меня везде и всегда в этой кодировке (Windows-1251). Заливаю и правлю их на мастере, дальше они текут себе спокойно на слейв. Оттуда их при необходимости выселекчиваю и всё ок.

Но внезапно что-то где-то случилось и данные на слейве стали отдаваться мне в кодировке koi8r. С какого перепугу - вообще не пойму.

Поясняю на примере. Вот простенькая таблица users:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
show create table users\G
*************************** 1. row ***************************
       Table: users
Create Table: CREATE TABLE `users` (
  `PID` smallint(6) NOT NULL AUTO_INCREMENT,
  `UserName` text NOT NULL,
  `Login` tinytext,
  `Password` tinytext,
  PRIMARY KEY (`PID`)
) ENGINE=InnoDB AUTO_INCREMENT=163 DEFAULT CHARSET=cp1251 ROW_FORMAT=COMPRESSED
1 row in set (0.00 sec)


(выдача полностью идентична на мастере и слейве)

Вот я лезу в консоль на мастере и беру какую-то запись:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
localhost-tk-17:03:57> select username from users where pid=2;
+-------------------------+
| username                |
+-------------------------+
| Ермаков Виктор Иванович |
+-------------------------+
1 row in set (0.03 sec)



Вот делаю то же самое в консоли на слейве:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
localhost-tk-17:06:36> select username from users where pid=2;
+-------------------------+
| username                |
+-------------------------+
| еПЛЮЙНБ бХЙРНП хБЮМНБХВ |
+-------------------------+
1 row in set (0,00 sec)



Дальше - хлеще. Лезу с консоли мастера на слейв - получаю правильную выдачу в cp1251. Лезу с консоли слейва на мастер - получаю уродство, для прочтения которого приходится писать " SET NAMES koi8r ".

Ну а теперь собственно самое главное - настройки:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
localhost-tk-17:07:44> show variables like 'character\_set\_%';
+--------------------------+--------+
| Variable_name            | Value  |
+--------------------------+--------+
| character_set_client     | cp1251 |
| character_set_connection | cp1251 |
| character_set_database   | cp1251 |
| character_set_filesystem | binary |
| character_set_results    | cp1251 |
| character_set_server     | cp1251 |
| character_set_system     | utf8   |
+--------------------------+--------+
7 rows in set (0.00 sec)



Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
localhost-tk-17:07:57> show variables like 'collat%';
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | cp1251_general_ci |
| collation_database   | cp1251_general_ci |
| collation_server     | cp1251_general_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)


Обе выдачи одинаковы и для мастера, и для слейва.

В конфигах обоих серверов стоят параметры:

в секции mysql
default-character-set=cp1251

в секции mysqld
character-set-server=cp1251
skip-character-set-client-handshake

Короче, всё вроде как везде одинаковое. Святые письмена я курил и перекуривал, ничего больше не придумал.

Да, и ещё когда я общаюсь с обеими серваками посредством phpMyAdmin, вообще никаких проблем не возникает, всё отдаётся в cp1251.

Где могут быть грабли? Реально голову уже сломал...

PS. Кодировка koi8r выставлена как дефолтная для Фри. Но, насколько я понимаю, это не может оказывать влияние на работу в консоли MySQL. Хотя смутное предчувствие подсказывает, что наверняка где-то там и порылась собака...
...
Рейтинг: 0 / 0
Странное с кодировкой: сломал голову
    #38802553
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока Вы достаточно убедительно доказываете, что проблема кодировки связана не с сервером, а с клиентской частью. На мастере всё в порядке, а на слейве имеют место быть проблемы.
...
Рейтинг: 0 / 0
Странное с кодировкой: сломал голову
    #38802585
Алекс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, к этим же выводам я и пришёл. Вот, собственно, и пытаюсь понять, какие тут могут быть ещё грабли. Пересмотрел на всякий случай клиентский .my.cnf , но там только директивы promt и pager.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Странное с кодировкой: сломал голову
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]