Как узнать, усекло ли MYSQL поле во время обновления usint Perl DBI? - PullRequest
4 голосов
/ 13 декабря 2010

Когда я запускаю это обновление SQL в DBVis, я получаю сообщение об ошибке (Усечение данных: слишком длинные данные для столбца «Описание» в строке 1).

Однако в Perl (DBI) это не дает мне ошибку, я предполагаю, потому что запись фактически была обновлена ​​с усеченным значением.

Может кто-нибудь сказать мне, как показать эту ошибку?

Ответы [ 3 ]

6 голосов
/ 13 декабря 2010

Поскольку усечения данных выдают предупреждения, вы можете использовать SHOW WARNINGS для их просмотра. Кроме того, вы можете повышать количество предупреждений о фатальных ошибках, установив для сервера Режим SQL значение, запрещающее усечения (например, TRADITIONAL).

2 голосов
/ 13 декабря 2010

Когда вы говорите "это не дает мне ошибку", как вы проверяете это?Обычно вы можете проверить состояние операции DBI, проверив значение $DBI::err или $dbh->errstr.Кроме того, вы можете сделать так, чтобы ошибки отображались как исключения, если вы настроили ваше соединение с параметром RaiseError => 1.

. См. Документацию и найдите «err» для подробного обсуждения всехдоступные вам варианты.

1 голос
/ 13 декабря 2010

интерпретируется как предупреждение вместо ошибок,

Итак,

show warnings;

детали: http://dev.mysql.com/doc/refman/5.0/en/faqs-cjk.html#qandaitem-B-11-1-9

...