23.04.2018 07:41
Cyber
 
Здравствуйте, в журнале сервера вечно дублируется такая ошибка.

job 'Монитор состояния' start failed class db_error ( Query failed Error(1406) Data too long for column 'value' at row 3 SQL insert into mon_values (cat_id,code,name,description,value,show_order) values (81570, 'START_MOMENT', 'Время начала', 'Время начала операции', '1524448803', 1),(81570, 'STOP_MOMENT', 'Время завершени', 'Врем )
23.04.2018 08:53
OlegON
 
Называй темы конкретнее, пожалуйста.

По проблеме все очень просто.
Посмотри размерность колонки value в mon_values, например, командой desc mon_values и выясни, почему у тебя такое большое число 1524448803. Если оно таким и должно быть - просто увеличь размерность колонки. Однако, имей ввиду, что это может где-то еще вылезти и уже менее заметно.
23.04.2018 10:02
vdm
 
Там value - это строка и идет вставка слишком длинной строки.
На "стороннем" mysql однажды наткнулся. В одном из my.cfg затесался параметр
Код:
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
Вот это STRICT_TRANS_TABLES включает запрет записи в поле значений не соответствующих его размерности.
А УКМ видимо не заморачивается предварительной обрезкой, по крайней мере при работе с этой таблицей.
В конфиге mysql сервера из комплекта УКМ этого ограничения нет и запись проходит молча, с обрезкой строки до длины поля.
24.04.2018 09:01
Cyber
 
Цитата:
vdm Там value - это строка и идет вставка слишком длинной строки.
На "стороннем" mysql однажды наткнулся. В одном из my.cfg затесался параметр
Код:
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
Вот это STRICT_TRANS_TABLES включает запрет записи в поле значений не соответствующих его размерности.
А УКМ видимо не заморачивается предварительной обрезкой, по крайней мере при работе с этой таблицей.
В конфиге mysql сервера из комплекта УКМ этого ограничения нет и запись проходит молча, с обрезкой строки до длины поля.
Я правильно понимаю, что нужно добавить этот параметр в my.ini?
Или сделать как советует Олег.
24.04.2018 09:44
vdm
 
Проверь сначала, дело в параметрах сервера или нет.
В mysql
Код:
mysql> show variables like 'sql_mode';
Если в результате есть STRICT_TRANS_TABLES - ищи откуда взялось и убирай.

Не найдешь причин в сервере - длину поля в таблице можно и увеличить, но по-хорошему сам УКМ должен резать слишком длинное перед вставкой, это уже вопрос к С+.
24.04.2018 09:50
OlegON
 
Вы бы погодили резать-то... Я присмотрелся, это unixtime. Т.е. смысла в "зарезанном" может не быть вообще никакого. Разобраться бы с логикой, что это пхается и зачем.
24.04.2018 10:16
vdm
 
Не, таблица mon_values - это структурированный журнал работы некоторых систем сервера.
Поле value - varchar(200) и в нем может быть что угодно: число, время, строка и т.п. в зависимости от code.
У меня стало падать на попытке УКМ записать туда текст mysql ошибки репликации на кассу.
24.04.2018 11:18
OlegON
 
Ошибка кривая какая-то... Я увидел, что вставка идет
Цитата:
Cyber 1524448803
видимо, там дальше что-то дельное было.
27.04.2018 09:54
Cyber
 
Цитата:
OlegON Ошибка кривая какая-то... Я увидел, что вставка идет

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

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.