Hay un MySQL table
que tiene esta definición tomada de SQLYog Enterprise
:
Table Create Table
----------------- ---------------------------------------------------------
etape_prospection CREATE TABLE `etape_prospection` (
`etape_prosp_id` int(10) NOT NULL AUTO_INCREMENT,
`type_prosp_id` int(10) NOT NULL DEFAULT '0',
`prosp_id` int(10) NOT NULL DEFAULT '0',
`etape_prosp_date` datetime DEFAULT NULL,
`etape_prosp_comment` text,
PRIMARY KEY (`etape_prosp_id`),
KEY `concerne_fk` (`prosp_id`),
KEY `de_type_fk` (`type_prosp_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1
Quiero cambiar el default charset
de esta tabla de latin1
a utf8
. Como hacer eso ?
Respuestas:
Si desea cambiar la tabla
default character set
y todas las columnas de caracteres a un nuevo conjunto de caracteres, use una declaración como esta:Entonces la consulta será:
fuente
ALTER TABLE tbl CHARACTER SET utf8
sintaxis sugerida por otros, cambiará solo la codificación predeterminada para la tabla; las columnas existentes no se convertirán como lo harán si usa esta respuesta.SELECT concat('alter table ', table_name, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;') FROM information_schema.tables WHERE table_schema='<your_database_name>' and table_collation != 'utf8_general_ci' GROUP BY table_name;
ALTER TABLE tbl CHARACTER SET utf8
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Cambiar el juego de caracteres predeterminado de la tabla:
Para cambiar el conjunto de caracteres de la columna de cadena supere esta consulta:
fuente
El
ALTER TABLE
comando MySQL debería funcionar. El siguiente comando cambiará el juego de caracteres predeterminado de su tabla y el juego de caracteres de todas sus columnas a UTF8.Este comando convertirá todas las columnas similares a texto en la tabla al nuevo juego de caracteres. Los conjuntos de caracteres utilizan diferentes cantidades de datos por carácter, por lo que MySQL convertirá el tipo de algunas columnas para garantizar que haya suficiente espacio para adaptarse a la misma cantidad de caracteres que el tipo de columna anterior.
Le recomiendo que lea la documentación de ALTER TABLE MySQL antes de modificar cualquier dato en vivo.
fuente
Si alguien está buscando una solución completa para cambiar el juego de caracteres predeterminado para todas las tablas de la base de datos y convertir los datos, esta podría ser una:
Puede colocar este código dentro del archivo, por ejemplo,
chg_char_set.sql
y ejecutarlo, por ejemplo, llamándolo desde la terminal MySQL:Luego llame al procedimiento definido con los parámetros de entrada deseados, por ejemplo
Una vez que haya probado los resultados, puede eliminar esos procedimientos almacenados:
fuente
Puede cambiar el valor predeterminado con un
alter table set default charset
pero eso no cambiará el juego de caracteres de las columnas existentes. Para cambiar eso, debe usar unalter table modify column
.Cambiar el juego de caracteres de una columna solo significa que podrá almacenar una gama más amplia de caracteres. Su aplicación habla con la base de datos utilizando el cliente mysql, por lo que es posible que también deba cambiar la codificación del cliente.
fuente