2012-03-08 9 views
5

Alter table merry_parents cambia mobile mobile char (10).mysql: come troncare la lunghezza di un campo

Quando faccio l'errore di cui sopra mi sto:

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

Così come posso troncare il mio campo cellulare a char (10). Attualmente è char (12).

risposta

14

L'errore indica che nella riga 2 sono presenti 12 caratteri (e probabilmente altri) quindi viene interrotto il comando alter per evitare di perdere dati.

Prova ad aggiornare la tabella utilizzando SUBSTRING() per abbreviare la colonna. Non è chiaro il motivo per cui si vuole fare questo come perderai i dati, ma questo troncherà i dati a 10 caratteri:

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

Quindi eseguire il comando alter:

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

grazie. Ha funzionato! :) Sto lavorando con i dati di test quindi va bene se sto perdendo dati. :) – vaanipala

+0

Vedere la mia tabella Avere un campo con genere char (1), voglio renderlo gender enum ('m', 'f', 'o') cosa dovrei fare? Mostra errore troncante mentre modifica direttamente da char a enum –

0

Si dispone di dati con più caratteri della lunghezza della colonna in cui si sta tentando di modificarlo.

Oppure si dispone di un valore nullo nel campo specificato.

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

3

Se siete ok con troncare i dati a 10 caratteri - è possibile aggiornare la colonna, poi ridimensionarla

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

quindi eseguire l'ALTER.

+0

vedere la mia tabella Avere un campo con char genere (1), voglio farlo enum genere ('m', 'f', 'o') cosa dovrei fare? Si mostra errore troncamento mentre si altera direttamente da char a enum –

1

Se siete disposti a poco sono i dati troncato, si può fare in un solo passaggio utilizzando l'opzione IGNORA sulla ALTER:

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

Non funziona in MySQL 5.9 –