у меня есть сервер mysql 5.1.50. Недавно я создал файл дампа для некоторых старых таблиц с данными, преобразованными из старых версий mysql. во время импорта я получил сообщения «Данные усечены для столбца». короткий поиск показал, что есть строки со значениями varchar, которые превышают определенное значение varchar таблицы.
- как это возможно? пытался воссоздать его безуспешно, кто-нибудь сталкивался с таким состоянием?
- как я могу найти проблемные строки без полного сканирования всей таблицы?
- самое главное, могут ли это быть фиксы (опять же, при простом решении полный дроп-создать не поможет)
из db (данные скрыты, но настоящие выборки):
desc xxx +----------------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | date | date | NO | MUL | NULL | | | int1 | int(10) unsigned | NO | | NULL | | | v1 | varchar(200) | NO | | NULL | | | v2 | varchar(200) | NO | | NULL | | | i2 | int(10) unsigned | NO | | NULL | | | i3 | int(10) unsigned | NO | | NULL | | | f1 | float | NO | | NULL | | | f2 | float | NO | | NULL | | +----------------+------------------+------+-----+---------+----------------+ select count(id) from xxx where length(v1)>200 group by length(v1); +-----------+------------------+ | count(id) | length(v1) | +-----------+------------------+ | 7 | 201 | | 1 | 202 | | 1 | 203 | | 5 | 204 | | 1 | 205 | | 1 | 206 | | 5 | 207 | | 9 | 208 | | 4 | 209 | | 1 | 210 | | 67 | 212 | | 13 | 214 | | 1 | 215 | | 1 | 216 | | 2 | 220 | | 2 | 221 | | 2 | 230 | | 2 | 235 | | 1 | 274 | | 1 | 290 | | 1 | 320 | +-----------+------------------+