【发布时间】:2020-04-15 18:20:26
【问题描述】:
在我的删除服务器上执行 MySQL 中的存储过程时,如下所示:
CREATE OR REPLACE PROCEDURE `SetNextPage`(
IN `inRefNo` varchar(30) COLLATE utf8_general_ci,
IN `inStage` varchar(40) COLLATE utf8_general_ci,
IN `inRedirectTo` varchar(50) COLLATE utf8_general_ci,
IN `inSurveyType` varchar(14) COLLATE utf8_general_ci
)
BEGIN
IF inSurveyType = 'preinspection' THEN
UPDATE preinspections SET Stage = inStage, RedirectTo = inRedirectTo WHERE RefNo = inRefNo;
ELSE
UPDATE surveys SET Stage = inStage, RedirectTo = inRedirectTo WHERE RefNo = inRefNo;
END IF;
END
我收到如下错误消息:
用于操作“=”的排序规则 (utf8_unicode_ci,IMPLICIT) 和 (utf8_general_ci,IMPLICIT) 的非法混合
这是我的数据库中的表的屏幕截图,查询如下:
SELECT TABLE_NAME, TABLE_COLLATION
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA="mydatabase" AND TABLE_TYPE="BASE TABLE";
这个表 quick_tables.bck 只是卡在那里,因为它的名称中有 .bck。但它不在我的代码中。
下面是带有 SQL 查询的系统变量的快照,如下所示:
SHOW VARIABLES WHERE Variable_name LIKE ("character%") OR Variable_name LIKE ("Collation%");
变量名值
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem 二进制
character_set_results utf8
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
collation_connection utf8_unicode_ci
collation_database utf8_general_ci
collation_server latin1_swedish_ci
在使用共享主机的远程服务器上,我无法更改环境变量。
我应该进行哪些更改以使我的存储过程能够运行?
【问题讨论】:
标签: mysql stored-procedures collation