2012-03-08 31 views
5

Alter table merry_parents change mobile mobile char (10).mysql: jak obcinać długość pola

Kiedy robię błąd powyżej Dostaję:

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

Więc jak mogę truncate moje pole mobilnej char (10). Obecnie jest to char (12).

Odpowiedz

14

Błąd informujący, że w wierszu 2 znajdują się dane o długości 12 znaków (i prawdopodobnie inne), dlatego zostało zatrzymane polecenie alter, aby uniknąć utraty danych.

Spróbuj zaktualizować tabelę, używając SUBSTRING(), aby skrócić kolumnę. Nie wiadomo, dlaczego chcesz to zrobić jak stracisz dane, ale to obetnie dane 10 znaków:

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

Następnie uruchom alter polecenie:

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

dziękuję. To się udało! :) Pracuję z danymi testowymi, więc wszystko jest w porządku, jeśli tracę dane. :) – vaanipala

+0

Zobacz Mój stół Posiadanie pola z char char (1), chcę go wyodrębnić z płci ("m", "f", "o") co powinienem zrobić? Pokazuje błąd skracania podczas gdy jest zmieniany bezpośrednio z char do wyliczenia –

3

Jeśli jesteś ok z obcinania dane z szybkością 10 znaków - można zaktualizować kolumny pierwszej, a następnie zmienić jego rozmiar

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

Następnie uruchomić ALTER.

+0

zobaczyć mój stół Posiadanie pole z char płci (1), chcę, aby to enum płci ("m", "f", "o") co powinienem zrobić? Pokazuje błąd skracania podczas zmiany bezpośrednio z char do enum –

1

Jeśli są chętni po prostu mieć dane obcięte, można to zrobić w jednym etapie za pomocą opcji Ignoruj ​​na Alter:

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

Nie działa w MySQL 5.9 –