【发布时间】:2015-12-18 10:10:05
【问题描述】:
我已将数据库从本地机器导入到服务器机器。导入数据库时,系统默认将数据库的字符集值设置为“拉丁”。我已将数据库的字符集更改为“utf8”。但是,数据库排序规则值的存储过程不会被修改。目前它是“latin1_swedish_ci”。如何将所有存储过程的数据库排序规则值从“latin1_swedish_ci”更改为“utf8_general_ci”。
SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = DB_Name;
USE DB_Name;
ALTER DATABASE DB_Name
DEFAULT CHARACTER SET = utf8
DEFAULT COLLATE=utf8_general_ci;
SET NAMES UTF8;
提前致谢。
【问题讨论】:
-
一个选项是 DROP PROCEDURE 和 CREATE PROCEDURE。另一种选择(不太推荐)可以手动更新数据库
mysql的表proc的db_collation列。理想的做法是正确配置 MySQL 服务器,然后进行导入。 -
能否再次运行导入?我会尝试在导入之前解决这个问题。在开始导入之前指定正确的编码更容易。您的数据库转储是否包含 SET NAMES 命令?
-
@olegsv 是的,你是对的。我在使用 SET NAMES 导入数据库转储和转储包含之前解决了这个问题。
标签: mysql stored-procedures mysql-workbench