Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mySQL函数在本质上相同的两台服务器上的行为不同_Mysql_Utf 8_Stored Functions - Fatal编程技术网

mySQL函数在本质上相同的两台服务器上的行为不同

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

好吧,这里有一个很难的。。。 我有一个mySQL 5.1.73的开发服务器,我在上面写了一个函数来规范字符串以便于搜索。 将函数移动到生产环境时,相同的mySQL版本、相同的主要OS版本(CentOS 6.5)最新补丁、相同的主要内核版本等。该函数停止工作

下面是函数

  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