Než změníte typ sloupce, uveďte svůj server MySQL do přísného režimu a ujistěte se, že váš varchar(n)
sloupec má dostatečně velký n
podržet všechna celá čísla, když jsou převedena na řetězce. Pokud nejste v přísném režimu, MySQL potichu zkrátí vaše data aby se vešly na velikost vaší struny
:
Ale pokud se dostanete do přísný režim první:
mysql> set sql_mode = 'STRICT_ALL_TABLES';
mysql> alter table table_sample change col_sample col_sample varchar(6);
Zobrazí se pěkná chybová zpráva, jako je tato:
ERROR 1406 (22001): Data too long for column 'col_sample' at row ...
pokud se vaše celá čísla nevejdou do vašeho varchar
.
A samozřejmě budete mít čerstvou ověřenou zálohu databáze, než se pokusíte tabulku změnit. A podle ověřeno Myslím tím, že jste úspěšně obnovili zálohu do testovací databáze.