使用MySQL创建的数据库的默认字符集是latin1,这经常会导致在编运行中报错,类似于(1267, “Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation ‘='”)
之前没有接触过MySQL,最近遇到过这种情况,特记录于此。
使用指定编码创建数据库
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
[create_specification] ...
create_specification:
[DEFAULT] CHARACTER SET [=] charset_name
| [DEFAULT] COLLATE [=] collation_name
关于MySQL默认的CHARACTER SET,详见官方文档10.1.2 Character Sets and Collations in MySQL
例(以utf8编码创建数据库):CREATE DATABASE db_name DEFAULT CHARACTER SET utf8
查询数据库的默认编码
在MySQL的命令行中输入
>>USE database
>>STATUS
就可以得到数据库的编码信息
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
修改数据库的默认编码
alter database superset CHARACTER SET utf8