utf8_general_ci - ¿Cómo cambiar el conjunto de caracteres predeterminado de una tabla MySQL?
mysql utf (4)
Hay una table
MySQL 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 default charset
de esta tabla de utf8
a utf8
. Como hacer eso ?
Cambiar el conjunto de caracteres predeterminado de la tabla:
ALTER TABLE etape_prospection
CHARACTER SET utf8,
COLLATE utf8_general_ci;
Para cambiar el conjunto de caracteres de la columna de cadena exceute esta consulta:
ALTER TABLE etape_prospection
CHANGE COLUMN etape_prosp_comment etape_prosp_comment TEXT CHARACTER SET utf8 COLLATE utf8_general_ci;
El comando ALTER TABLE
MySQL debería hacer el truco. El siguiente comando cambiará el conjunto de caracteres predeterminado de su tabla y el conjunto de caracteres de todas sus columnas a UTF8.
ALTER TABLE etape_prospection CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
Este comando convertirá todas las columnas de texto de la tabla al nuevo conjunto 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 que quepan los mismos 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.
Puede cambiar el valor predeterminado con un alter table set default charset
pero eso no cambiará el conjunto de caracteres de las columnas existentes. Para cambiar eso necesitas usar una alter table modify column
.
Cambiar el conjunto de caracteres de una columna solo significa que podrá almacenar un rango más amplio de caracteres. Su aplicación se comunica con la base de datos utilizando el cliente mysql, por lo que es posible que también deba cambiar la codificación del cliente.
Si desea cambiar el default character set
la tabla y todas las columnas de caracteres a un nuevo conjunto de caracteres, use una declaración como esta:
ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
Entonces la consulta será:
ALTER TABLE etape_prospection CONVERT TO CHARACTER SET utf8;