如何更改MySQL表的默认字符集?

有一个MySQL table ,这个定义取自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 

我想把这个表的default charsetlatin1改为utf8 。 怎么做 ?

如果要将表格default character set和所有字符列更改为新的字符集,请使用如下所示的语句:

 ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name; 

所以查询将是:

 ALTER TABLE etape_prospection CONVERT TO CHARACTER SET utf8; 

更改表格的默认字符集:

 ALTER TABLE etape_prospection CHARACTER SET utf8, COLLATE utf8_general_ci; 

要更改string列字符集,请执行以下查询:

 ALTER TABLE etape_prospection CHANGE COLUMN etape_prosp_comment etape_prosp_comment TEXT CHARACTER SET utf8 COLLATE utf8_general_ci; 

您可以使用alter table set default charset但不会更改现有列的charset。 要改变,你需要使用一个alter table modify column

更改列的字符集只意味着它将能够存储更广泛的字符。 您的应用程序使用mysql客户端与db进行通信,因此您可能还需要更改客户端编码。

ALTER TABLE MySQL命令应该做的。 运行

 ALTER TABLE etape_prospection CHARSET=utf8; 

会将表格的默认字符集更改为UTF8。 我build议您在修改任何实时数据之前调查ALTER TABLE MySQL文档中的语法。