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