mySQL函数在本质上相同的两台服务器上的行为不同
好吧,这里有一个很难的。。。 我有一个mySQL 5.1.73的开发服务器,我在上面写了一个函数来规范字符串以便于搜索。 将函数移动到生产环境时,相同的mySQL版本、相同的主要OS版本(CentOS 6.5)最新补丁、相同的主要内核版本等。该函数停止工作 下面是函数mySQL函数在本质上相同的两台服务器上的行为不同,mysql,utf-8,stored-functions,Mysql,Utf 8,Stored Functions,好吧,这里有一个很难的。。。 我有一个mySQL 5.1.73的开发服务器,我在上面写了一个函数来规范字符串以便于搜索。 将函数移动到生产环境时,相同的mySQL版本、相同的主要OS版本(CentOS 6.5)最新补丁、相同的主要内核版本等。该函数停止工作 下面是函数 CREATE DEFINER=`user`@`%` FUNCTION `normalize`(str VARCHAR(255)) RETURNS varchar(255) CHARSET utf8 BEGIN D
CREATE DEFINER=`user`@`%` FUNCTION `normalize`(str VARCHAR(255)) RETURNS varchar(255) CHARSET utf8
BEGIN
DECLARE normstring VARCHAR(255);
DECLARE i INT;
SET i = 0;
SET normstring = '';
SET str = lower(str);
loop1: WHILE i < length(str) DO
CASE substring(str,i,1)
WHEN 'ä' THEN SET normstring = concat(normstring,'ae');
WHEN 'ö' THEN SET normstring = concat(normstring,'oe');
WHEN 'ü' THEN SET normstring = concat(normstring,'ue');
WHEN 'ß' THEN SET normstring = concat(normstring,'ss');
WHEN '/' THEN SET i = i + 1; ITERATE loop1;
WHEN '.' THEN SET i = i + 1; ITERATE loop1;
WHEN '-' THEN SET i = i + 1; ITERATE loop1;
WHEN '(' THEN SET i = i + 1; ITERATE loop1;
WHEN ')' THEN SET i = i + 1; ITERATE loop1;
WHEN ' ' THEN SET i = i + 1; ITERATE loop1;
WHEN '\'' THEN SET i = i + 1; ITERATE loop1;
WHEN '\\' THEN SET i = i + 1; ITERATE loop1;
ELSE SET normstring = concat(normstring,substring(str,i,1));
END CASE;
SET i = i + 1;
END WHILE;
RETURN normstring;
END$$
DELIMITER ;
我相信你们在当地的环境和生产之间有着不同的性格。查看这些关于如何检测和如何更改的文章。不,除我提到的变量外,所有服务器的两侧设置都完全相同。一切都设置为utf8。
character_set_client........................ utf8
character_set_connection.................... utf8
character_set_database...................... utf8
character_set_filesystem.................... binary
character_set_results....................... utf8
character_set_server........................ utf8
character_set_system........................ utf8
collation_connection........................ utf8_unicode_ci
collation_database.......................... utf8_unicode_ci
collation_server............................ utf8_unicode_ci