Change MySQL stored procedure 'Database Collat

2019-06-16 09:11发布

I have imported a DB from Local machine to server machine. While importing the Database, the character set values of the DB are set by system default to "Latin". I have changed the character set to "utf8" for the Database. But, the stored procedure of Database collation values are not modified. Currently it is "latin1_swedish_ci". How to change the Database collation values from "latin1_swedish_ci" to "utf8_general_ci" for all the stored procedures.

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;

Thanks in advance.

1条回答
闹够了就滚
2楼-- · 2019-06-16 09:47

As documented under CREATE PROCEDURE and CREATE FUNCTION Syntax (emphasis added):

If CHARACTER SET and COLLATE attributes are not present, the database character set and collation in effect at routine creation time are used. To avoid having the server use the database character set and collation, provide explicit CHARACTER SET and COLLATE attributes for character data parameters.

If you change the database default character set or collation, stored routines that use the database defaults must be dropped and recreated so that they use the new defaults.

查看更多
登录 后发表回答