wrong utf8_general_ci utf8 needs charset character_set_database character_set_client change but mysql sqlyog

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;