一、修改my.ini配置文件(mysql配置文件)
character_set_server = utf8 #设置字符集
重启mysql数据库服务
查看当前数据库字符集
show VARIABLES like 'character%';
二、修改数据库字符集
alter database 数据库名 character set utf8;
ps:修改完数据库字符集,需要重启mysql数据库。
三、修改表字符集
ALTER TABLE 表名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
生成所有表修改字符集
SELECT
TABLE_NAME,
CONCAT(
'ALTER TABLE ',
TABLE_NAME,
' DEFAULT CHARACTER SET ',
a.DEFAULT_CHARACTER_SET_NAME,
' COLLATE ',
a.DEFAULT_COLLATION_NAME,
';'
) executeSQL
FROM information_schema.SCHEMATA a,information_schema.TABLES b
WHERE a.SCHEMA_NAME=b.TABLE_SCHEMA
AND a.DEFAULT_COLLATION_NAME!=b.TABLE_COLLATION
AND b.TABLE_SCHEMA='数据库名'
四、修改列字符集
ALTER TABLE 表名 CHANGE 列名 列名 VARCHAR( 100 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;
生成所有列修改字符集语句
SELECT
b.table_name,
b.column_name,
b.character_set_name,
b.collation_name,
CONCAT(
'ALTER TABLE ',
b.table_name,
' MODIFY ',
b.column_name,
' ',
b.DATA_TYPE,
'(',
b.CHARACTER_MAXIMUM_LENGTH,
') ',
CASE
WHEN b.COLUMN_DEFAULT IS NULL THEN ''
ELSE CONCAT('DEFAULT \'', b.COLUMN_DEFAULT, '\'')
END,
' COMMENT \'',
b.COLUMN_COMMENT,
'\';'
) executeSQL
FROM information_schema.TABLES a,information_schema.COLUMNS b
WHERE b.character_set_name IS NOT NULL
AND a.TABLE_SCHEMA=b.TABLE_SCHEMA
AND a.TABLE_NAME=b.TABLE_NAME
AND a.TABLE_COLLATION!=b.COLLATION_NAME
AND a.TABLE_SCHEMA='数据库名'