如下所示,在我的删除服务器上的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查询的系统变量的快照:
character_set_client utf8character_set_connection utf8character_set_database utf8character_set_filesystem binarycharacter_set_results utf8character_set_server latin1character_set_system utf8character_sets_dir / usr / share / mysql / charsets /collation_connection utf8_unicode_cicollation_database utf8_general_cicollation_server latin1_swedish_ciSHOW VARIABLES WHERE Variable_name LIKE ("character%") OR Variable_name LIKE ("Collation%");
变量名称值
作为一台具有共享主机的删除服务器,我无法更改环境变量。
要使我的存储过程运行,应进行哪些更改?
[如下所示,在我的删除服务器上的MySQL中执行存储过程时:创建或替换过程`SetNextPage`(IN`inRefNo` varchar(30)收集utf8_general_ci,IN`inStage` varchar(40)...
执行SHOW CREATE PROCEDURE SetNextPage \G
您可能会发现,定义proc时生效的字符集和/或排序规则不是您现在想要的。