更改MySQL存储过程'Database Collat​​ion'名称

Nis*_*sar 9 mysql stored-procedures mysql-workbench

我已经从本地机器到服务器机器导入了数据库.导入数据库时​​,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;
Run Code Online (Sandbox Code Playgroud)

提前致谢.

egg*_*yal 7

CREATE PROCEDURE和CREATE FUNCTION语法中所述(强调添加):

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

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

  • 该文档并没有真正告诉您如何使用它们。另外mysql workbench有一个错误,告诉您COLLATE始终无效,即使它是无效的。 (3认同)