mysql:如何截断字段的长度

时间:2012-03-08 00:05:23

标签: mysql field truncate alter

Alter table merry_parents change mobile mobile char(10).

当我执行上述操作时,我收到错误:

  

#1265 - 第2行的“移动”列截断数据

如何将移动字段截断为char(10)?目前它是char(12)。

4 个答案:

答案 0 :(得分:21)

错误告诉您第2行(可能还有其他数据)中有12个字符的数据,所以它会停止alter命令以避免丢失数据。

尝试使用SUBSTRING()更新您的表格以缩短列。目前还不清楚为什么要这样做会丢失数据,但这会将数据截断为10个字符:

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

然后运行你的alter命令:

ALTER TABLE merry_parents CHANGE mobile mobile char(10).

答案 1 :(得分:3)

如果您可以将数据截断为10个字符 - 您可以先更新列,然后再调整大小

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

然后运行你的alter语句。

答案 2 :(得分:1)

如果您愿意截断数据,可以使用ALTER上的IGNORE选项一步完成:

ALTER IGNORE TABLE merry_parents MODIFY mobile char(10);

答案 3 :(得分:0)

您的数据字符数多于您尝试将其更改为的列的长度。

或者您在指定字段中有空值。

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