步骤4:转换数据库编码
sql
转换数据库
ALTER DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
转换所有表
SELECT CONCAT('ALTER TABLE ', table_name, ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;')
FROM information_schema.tables
WHERE table_schema = 'database_name';
5、处理乱码问题
检查和修复乱码数据
sql
检查可能的乱码
SELECT * FROM table_name WHERE column_name REGEXP '[^\x00-\x7F]';
如果数据已经是乱码,可以尝试转换(谨慎使用)
UPDATE table_name
SET column_name = CONVERT(CAST(CONVERT(column_name USING latin1) AS BINARY) USING utf8mb4)
WHERE column_name IS NOT NULL;
导入时指定编码
mysql -u username -p default-character-set=utf8mb4 database_name < export.sql
8、验证编码转换
sql
验证数据库编码
SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
FROM information_schema.SCHEMATA
WHERE SCHEMA_NAME = 'database_name';
验证表编码
SELECT TABLE_NAME, TABLE_COLLATION
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'database_name';
验证列编码
SELECT COLUMN_NAME, CHARACTER_SET_NAME, COLLATION_NAME
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'database_name' AND TABLE_NAME = 'table_name';