【发布时间】:2015-06-03 13:17:13
【问题描述】:
我在 MySQL SERVER 5.5 和 MySQL SERVER 5.0 版本中使用了两台 MySQL 服务器。我尝试在两台服务器中执行查询。这是我的查询:
DELIMITER $$
DROP PROCEDURE IF EXISTS `get_user_permissionlist`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `get_user_permissionlist`(
pUserId INT,
pApplicationId INT
)
BEGIN
DECLARE vDefaultManagerPermission VARCHAR(20);
SET vDefaultManagerPermission = (SELECT PermissionName FROM permission_level WHERE userid = pUserId);
IF vDefaultManagerPermission = 'Administrator'
THEN
SELECT PermissionId
,PermissionName
FROM ( SELECT pl.PermissionId
,pl.PermissionName
,CASE permissionname
WHEN 'administrator' THEN '1'
WHEN 'operator' THEN '2'
WHEN 'power user' THEN '3'
ELSE '4'
END AS rank
FROM permission_level pl
WHERE pl.ApplicationId = pApplicationId
) d
ORDER BY CASE WHEN rank <= 3 THEN rank
ELSE PermissionName
END;
END IF;
END $$
DELIMITER ;
我尝试使用以下查询执行 PROCEDURE。
CALL st_proc_get_user_permissionlist('5', '1')
当我在 MySQL SERVER 5.0 中执行查询时,没有问题。但是我在 MySQL SERVER 5.5 中尝试了同样的方法,它显示错误:
Illegal mix of collations (utf8_general_ci,COERCIBLE) and (latin1_swedish_ci,IMPLICIT) for operation 'case'
我不明白为什么它会抛出错误,并且两个服务器中的字符集、排序规则都是相同的。
【问题讨论】:
标签: mysql character-encoding collation