2012-03-08 6 views
5

Alter table merry_parents изменить мобильный мобильный символ (10).mysql: как обрезать длину поля

Когда я делаю выше я получаю сообщение об ошибке:

#1265 - Data truncated for column 'mobile' at row 2

Так как я могу обрезать мое мобильное поле для CHAR (10). В настоящее время это char (12).

ответ

14

Ошибка сообщает вам, что в строке 2 есть данные длиной 12 символов (и, возможно, другие), поэтому она останавливает команду alter, чтобы избежать потери данных.

Попробуйте обновить таблицу, используя SUBSTRING(), чтобы сократить колонку. Пока неясно, почему вы хотите сделать это, как вы потеряете данные, но это будет усекать данные до 10 символов длиной:

UPDATE merry_parents SET mobile=SUBSTRING(mobile, 1, 10) 

Затем запустите альтер команду:

ALTER TABLE merry_parents CHANGE mobile mobile char(10). 
+0

спасибо. Это сработало! :) Я работаю с тестовыми данными, так что это нормально, если я теряю данные. :) – vaanipala

+0

См. «Моя таблица». Имея поле с полом char (1), я хочу сделать его полным перечислением ('m', 'f', 'o'), что мне делать? Его отображение обрезающей ошибки при изменении непосредственно из char в enum –

0

У вас есть данные, которые имеют больше символов, чем длина столбца, в который вы пытаетесь его изменить.

Или у вас есть нулевое значение в указанном поле.

http://bugs.mysql.com/bug.php?id=14742

3

Если вы нормально с усечения данных по 10 символов - вы можете обновить столбец, а затем изменить его размер

UPDATE <tablename> set mobile = left(mobile, 10); 

Затем запустите альтер заявление.

+0

Посмотреть Моя таблица Имея поле с пола полукокса (1), я хочу сделать это гендерное перечисление ('m', 'f', 'o'), что я должен делать? Его отображение обрезающей ошибки при изменении непосредственно от char до перечисления –

1

Если вы готовы просто были усечены данные, вы можете сделать это в один шаг с помощью параметра IGNORE на алтаре:

ALTER IGNORE TABLE merry_parents MODIFY mobile char(10); 
+1

Не работает в MySQL 5.9 –

Смежные вопросы