mysql: how to truncate the length of a field

21,761

Solution 1

The error is telling you that there is data 12 characters long in row 2 (and probably others) so it's stopped the alter command to avoid losing data.

Try updating your table using SUBSTRING() to shorten the column. It's unclear why you want to do this as you'll lose data, but this will truncate the data to 10 characters long:

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

Then run your alter command:

ALTER TABLE merry_parents CHANGE mobile mobile char(10).

Solution 2

If you are ok with truncating the data at 10 characters - you can update the column first, then resize it

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

Then run your alter statement.

Solution 3

If you are willing to just have the data truncated, you can do it in one step by using the IGNORE option on the ALTER:

ALTER IGNORE TABLE merry_parents MODIFY mobile char(10);
Share:
21,761
vaanipala
Author by

vaanipala

Updated on July 09, 2022

Comments

  • vaanipala
    vaanipala almost 2 years
    Alter table merry_parents change mobile mobile char(10).
    

    When I do the above I'm getting error:

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

    How can I truncate my mobile field to char(10)? Currently it is char(12).

  • vaanipala
    vaanipala about 12 years
    thank you. That worked! :) I'm working with test data so it is alright if i'm losing data. :)
  • dinesh kandpal
    dinesh kandpal over 6 years
    See My table Having a field with gender char(1) , I want to make it gender enum('m','f','o') what should i do ? Its showing truncating error while alter directly from char to enum
  • dinesh kandpal
    dinesh kandpal over 6 years
    See My table Having a field with gender char(1) , I want to make it gender enum('m','f','o') what should i do ? Its showing truncating error while alter directly from char to enum
  • philarmour
    philarmour almost 4 years
    If you're not using an ancient version MySQL this won't work. IGNORE was deprecated in 5.6 and removed in 5.7. see: dev.mysql.com/worklog/task/?id=7395