|
|
|
Мистическая ошибка с кодировкой при записи. Прошу гуру помощи.
|
|||
|---|---|---|---|
|
#18+
Проблема очень нестандартная и странная. При записи данных (а именно строка с кирилицей в UTF-8 ) в БД (таблица InnoDB utf8_general_ci ) иногда(!) русские буквы записываются вот такими кракозябрами Александр . Записываемые исходные данные нормальные в UTF-8 . Язык PHP . Кодировки везде установлены правильные. mysql_set_charset() использую. SET NAMES 'utf-8' тоже пробовал. Но это всё не то. Потому как проблема возникает иногда! Какие особенности появления этой ситуации я заметил? 1. Если только что коряво записанные данные сразу же считать из БД и вывести на экран, то они нормальные! Т.е. в том же PHP скрипте при том же подключении к БД. 2. Почему-то проблема появляется в таблицах, к которым давно (где-то сутки или пол суток) не производился запрос на запись. После этой первой ошибочной записи, все последующие запросы проходят без проблем. 3. Проблема замечена только в двух таблицах из всех. Таблицы не маленькие по полям. В одной 50 столбцов, в другой - 100. Записей в них не много. Данные - обычные тексты ( VARCHAR , CHAR ) да числа ( INT , MEDIUMINT , TINYINT ), пару ENUM , и по-одному TIME и DATE . Прошу специалистов MySQL большущей помощи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2014, 01:08:48 |
|
||
|
Мистическая ошибка с кодировкой при записи. Прошу гуру помощи.
|
|||
|---|---|---|---|
|
#18+
Modder_2. Почему-то проблема появляется в таблицах, к которым давно (где-то сутки или пол суток) не производился запрос на запись. После этой первой ошибочной записи, все последующие запросы проходят без проблем.И в эти сутки запросы на чтение отдают данные правильно. Первый запрос на запись заносит в базу крякозябрики, а второй и последующие уже нормальные данные. Верно понимаю? Modder_3. Проблема замечена только в двух таблицах из всех.Пересоздать их заново не пробовали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2014, 18:49:31 |
|
||
|
Мистическая ошибка с кодировкой при записи. Прошу гуру помощи.
|
|||
|---|---|---|---|
|
#18+
vkleИ в эти сутки запросы на чтение отдают данные правильно. Первый запрос на запись заносит в базу крякозябрики, а второй и последующие уже нормальные данные. Верно понимаю?Да, всё верно. vkleПересоздать их заново не пробовали?Нет. Не думаю, что это поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2014, 22:22:32 |
|
||
|
Мистическая ошибка с кодировкой при записи. Прошу гуру помощи.
|
|||
|---|---|---|---|
|
#18+
Может в конфигах где глюк? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2014, 14:02:13 |
|
||
|
Мистическая ошибка с кодировкой при записи. Прошу гуру помощи.
|
|||
|---|---|---|---|
|
#18+
Itee_01Может в конфигах где глюк? Скорее всего. Но где и в каких именно?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2014, 14:06:47 |
|
||
|
Мистическая ошибка с кодировкой при записи. Прошу гуру помощи.
|
|||
|---|---|---|---|
|
#18+
Александр. Было записанно в базу Александр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2014, 19:41:19 |
|
||
|
Мистическая ошибка с кодировкой при записи. Прошу гуру помощи.
|
|||
|---|---|---|---|
|
#18+
alex564657498765453Александр. Было записанно в базу Александр. Да, всё верно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2014, 00:59:50 |
|
||
|
Мистическая ошибка с кодировкой при записи. Прошу гуру помощи.
|
|||
|---|---|---|---|
|
#18+
Есть одно предположение, только оно не кажется мне совершенно логичным. И тут надо еще смотреть в деталях, как именно реализована работа с СУБД. Предположу, что MySQL-сервер в какой-то момент закрывает подключение. Например, по таймауту при бездействии. PHP об этом не знает и пытается отправить запрос на сервер. Возникает ошибка, которая обрабатывается внутри самого PHP - требуемое соединение с сервером устанавливается вновь. Однако, после такого восстановления соединение не инициализируется (имею в виду, что PHP сам сделает только коннект, но запрос SET NAMES не будет отправлен). Обнаруживается отслеживанием через mysql_thread_id(). В принципе, это объясняет Modder_Если только что коряво записанные данные сразу же считать из БД и вывести на экран, то они нормальные! А вот всё остальное не слишком стройно вписывается в эту теорию. Однако, могу предположить, что либо где-то в приложении кодировка устанавливается заново, либо открывается и инициализируется другое соединение после какого-то события/сбоя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2014, 01:27:56 |
|
||
|
Мистическая ошибка с кодировкой при записи. Прошу гуру помощи.
|
|||
|---|---|---|---|
|
#18+
Решено! Проблема была в чрезмерной экономии хостинг провайдера. А именно в мизерных настройках MySQL. Их можно отобразить SQL командой: Код: sql 1. Во-первых, кодировка по умолчанию на хостинге стоит cp1251 , которую нельзя поменять. Во-вторых, параметр wait_timeout был равен 15 ! Это значит, что если между SQL запросами больше 15 секунд, то текущее MySQL соединение закрывается, а когда делаешь следующий запрос, соединение создаётся снова, но уже с кодировкой по умолчанию! Это решается либо просьбой хостера поднять этот параметр до вменяемого значения, либо можно сделать это самому командой: Код: sql 1. P.S. Ох уж эти хостинги... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2014, 01:31:01 |
|
||
|
Мистическая ошибка с кодировкой при записи. Прошу гуру помощи.
|
|||
|---|---|---|---|
|
#18+
vkle, Где же Вы раньше были?) Ваши предположения абсолютно верны! Но мы уже сами решили, хотя пришли к этому не быстро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2014, 01:34:34 |
|
||
|
Мистическая ошибка с кодировкой при записи. Прошу гуру помощи.
|
|||
|---|---|---|---|
|
#18+
Modder_, Где-где... Да тут же, на форуме и был. Лет шесть назад была у меня проблема http://www.sql.ru/forum/552196/teryaetsya-kodirovka-na-hodu Только никакая взаимосвязь поначалу не нарисовалась. Когда отбросил положения 2 и 3 из первого поста, предположив, что они чем-то другим вызваны... Кстати, проблему тоже очень долго искал в тот раз - поначалу она проявлялась только на пиках нагрузки на сервер. Видимо, основная часть скриптов с лихвой укладывается эти секунды, что дает ощущение нормальной работы сервера в целом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2014, 08:06:00 |
|
||
|
Мистическая ошибка с кодировкой при записи. Прошу гуру помощи.
|
|||
|---|---|---|---|
|
#18+
vkleНапример, по таймауту при бездействии. PHP об этом не знает и пытается отправить запрос на сервер. Возникает ошибка, которая обрабатывается внутри самого PHP - требуемое соединение с сервером устанавливается вновь. Однако, после такого восстановления соединение не инициализируется (имею в виду, что PHP сам сделает только коннект, но запрос SET NAMES не будет отправлен). Обнаруживается отслеживанием через mysql_thread_id(). В принципе, это объясняет Если не ошибаюсь, делает это интерфейс php mysqli, а классический mysql ничего такого не делает и скрипты пишут "держа в уме" это поведение. Обычные скрипты просто валят ошибки и перестают работать при потере соединения. Но ведь и SET NAMES не рекомендуется использовать с mysqli. Там есть свой отдельный вызов. Как ведет себя сайт, если кодировку клиента выбирать как рекомендуется ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2014, 13:09:31 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=164&tid=1834304]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
42ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 251ms |
| total: | 358ms |

| 0 / 0 |
