Mysql: как усечь длину поля
Изменить таблицу merry_parents изменить мобильный мобильный char (10).
Когда я делаю выше, я получаю сообщение об ошибке:
# 1265 - Данные усечены для столбца "мобильный" в строке 2
Итак, как я могу усечь свое мобильное поле до char (10). В настоящее время это char (12).
Ответы
Ответ 1
Ошибка говорит вам, что в строке 2 (и, возможно, другие) содержится 12 символов в длину, поэтому она остановила команду alter, чтобы избежать потери данных.
Попробуйте обновить таблицу, используя SUBSTRING()
, чтобы сократить столбец. Непонятно, почему вы хотите это сделать, поскольку потеряете данные, но это усекает данные до 10 символов:
UPDATE merry_parents SET mobile=SUBSTRING(mobile, 1, 10)
Затем запустите команду alter:
ALTER TABLE merry_parents CHANGE mobile mobile char(10).
Ответ 2
Если вы в порядке с усечением данных с 10 символами - вы можете сначала обновить столбец, а затем изменить его размер
UPDATE <tablename> set mobile = left(mobile, 10);
Затем запустите инструкцию alter.
Ответ 3
Если вы хотите просто урезать данные, вы можете сделать это за один шаг, используя опцию IGNORE на ALTER:
ALTER IGNORE TABLE merry_parents MODIFY mobile char(10);
Ответ 4
У вас есть данные с большим количеством символов, чем длина столбца, в который вы пытаетесь его изменить.
Или у вас есть нулевое значение в указанном поле.
http://bugs.mysql.com/bug.php?id=14742