更改 MySQL 存储过程"数据库排序规则"名称



我已经将一个DB从本地机器导入到服务器机器。在导入数据库时,数据库的字符集值在系统默认情况下设置为"Latin"。我已将数据库的字符集更改为"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;

提前谢谢。

如CREATE PROCEDURE和CREATE FUNCTION语法下所述(重点添加):

如果不存在CHARACTER SETCOLLATE属性,则将使用在例程创建时有效的数据库字符集和排序规则。为了避免服务器使用数据库字符集和排序规则,请为字符数据参数提供显式的CHARACTER SETCOLLATE属性。

如果更改数据库默认字符集或排序规则,则必须删除并重新创建使用数据库默认值的存储例程,以便它们使用新的默认值。

最新更新