如何更改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 charset
从latin1
改为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文档中的语法。