2012-03-08 112 views
5

Alter table merry_parents change mobile mobile char (10).mysql: cómo truncar la longitud de un campo

Cuando hago el error anterior que estoy recibiendo:

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

Entonces, ¿cómo puedo truncar mi campo móvil a char (10). Actualmente es char (12).

Respuesta

14

El error indica que hay datos de 12 caracteres de largo en la fila 2 (y probablemente otros) por lo que se detuvo el comando alter para evitar la pérdida de datos.

Intente actualizar su tabla usando SUBSTRING() para acortar la columna. No está claro por qué quiere hacer esto como si no se pierden datos, pero esto va a truncar los datos a 10 caracteres de longitud:

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

A continuación, ejecute el comando alter:

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

gracias. ¡Eso funciono! :) Estoy trabajando con datos de prueba por lo que está bien si estoy perdiendo datos. :) – vaanipala

+0

See My table Tener un campo con gender char (1), quiero que sea gender enum ('m', 'f', 'o') ¿qué debo hacer? Muestra el error de truncamiento mientras modifica directamente de char a enum –

3

Si estás bien con truncar los datos a 10 caracteres - se puede actualizar la columna en primer lugar, a continuación, cambiar su tamaño

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

A continuación, ejecute su sentencia ALTER.

+0

ver a mi mesa Tener un campo con carbón de género (1), quiero que sea enumeración de género ('m', 'f', 'o') ¿qué debo hacer? Está mostrando un error truncado mientras modifica directamente de char a enum –

1

Si usted está dispuesto sólo han truncado los datos, puede hacerlo en un solo paso mediante el uso de la opción IGNORE en el ALTER:

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

No funciona en MySQL 5.9 –

Cuestiones relacionadas