Вывод MySQL «show warnings» идентифицирует проблемные строки по номеру. Какой лучший способ быстро просмотреть все данные для такой строки?
Например, после выполнения оператора update
результат показывает «1 предупреждение», а выполнение show warnings
выдает сообщение, подобное этому: «Данные усечены для столбца« персона »в строке 65278». Как я могу выбрать именно эту строку?
Вот конкретный пример изучения решения limit
:
create table test1 (
id mediumint,
value varchar(2)
);
insert into test1 (id, value) values
(11, "a"),
(12, "b"),
(13, "c"),
(14, "d"),
(15, "ee"),
(16, "ff");
update test1 set value = concat(value, "X") where id % 2 = 1;
show warnings;
Это приводит к выводу этого предупреждения:
+---------+------+--------------------------------------------+
| Level | Code | Message |
+---------+------+--------------------------------------------+
| Warning | 1265 | Data truncated for column 'value' at row 5 |
+---------+------+--------------------------------------------+
Чтобы получить только эту строку 5, я могу сделать это:
select * from test1 limit 4,1;
в результате чего:
+------+-------+
| id | value |
+------+-------+
| 15 | ee |
+------+-------+
Похоже, что смещение limit
(4) должно быть на единицу меньше номера строки, а номер строки, указанный в предупреждении, относится к исходной таблице обновления без учета условия where
.