telefono - ¿Cómo cambiará el tipo de campo mysql de INT a VARCHAR los datos previamente almacenados como INT?
tipos de datos en mysql pdf (1)
Obtenga su servidor MySQL en modo estricto antes de cambiar el tipo de columna y asegúrese de que su columna varchar(n)
tenga una n
suficientemente grande para contener todos los enteros cuando se conviertan en cadenas. Si no estás en modo estricto, MySQL truncará tus datos de forma silenciosa para adaptarlos al tamaño de tu cadena :
Si el modo SQL estricto no está habilitado y asigna un valor a una columna
CHAR
oVARCHAR
que exceda la longitud máxima de la columna, el valor se trunca para ajustarse y se genera una advertencia. Para el truncamiento de caracteres no espaciales, puede provocar un error (en lugar de una advertencia) y suprimir la inserción del valor mediante el uso del modo SQL estricto.
Pero si te metes en modo estricto primero:
mysql> set sql_mode = ''STRICT_ALL_TABLES'';
mysql> alter table table_sample change col_sample col_sample varchar(6);
Recibirás un bonito mensaje de error como este:
ERROR 1406 (22001): Data too long for column ''col_sample'' at row ...
si tus enteros no encajan en tu varchar
.
Y, por supuesto, tendrá una nueva copia de seguridad verificada de su base de datos antes de intentar cambiar la tabla. Y por verificado quiero decir que ha restaurado con éxito su copia de seguridad en una base de datos de prueba.
Necesito actualizar un campo en mi producción db de INT a VARCHAR.
La información en el campo INT actual es confidencial y quiero asegurarme de que no la modifique inadvertidamente o la destruya al cambiar el tipo de tabla. Por ejemplo, un usuario puede tener INT 123456 almacenado en esta columna y quiero asegurarme de que se almacene con precisión una vez convertido a VARCHAR.
¿Cuál es el proceso recomendado para lograr esto?
¿Hay algo de lo que deba preocuparme cuando uso algo como esto?
ALTER TABLE table_sample CHANGE col_sample col_sample VARCHAR;
Gracias de antemano por cualquier ayuda.