MySQL 1300无效的big5字符串:'\xC3\x97';

MySQL 1300无效的big5字符串:'\xC3\x97';,mysql,character-encoding,Mysql,Character Encoding,我不知道这里发生了什么事。我的一个DB服务器在尝试创建一个函数(在所有其他服务器上都能运行)时给了我该错误: 我的职能是 delimiter $$ CREATE DEFINER=`root`@`%` FUNCTION `getreadablesize`(`Width` DECIMAL(13,4),`Height` DECIMAL(13,4),`Type` VARCHAR(64)) RETURNS varchar(64) CHARSET utf8mb4 COLLATE utf8mb4_unico

我不知道这里发生了什么事。我的一个DB服务器在尝试创建一个函数(在所有其他服务器上都能运行)时给了我该错误:

我的职能是

delimiter $$

CREATE DEFINER=`root`@`%` FUNCTION `getreadablesize`(`Width` DECIMAL(13,4),`Height` DECIMAL(13,4),`Type` VARCHAR(64)) RETURNS varchar(64) CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci
BEGIN

RETURN concat(trim(trailing'.'
        from trim(trailing'0'
            from`Width`)),'\"',
    if(`Height`>0,concat(' × ',trim(trailing'.'
                from trim(trailing'0'
                    from`Height`)),'\"'),''),
    if(`Type`>'',concat(' ',`Type`),''));
END$$
确切的错误信息是

0行受影响,2条警告:1300无效的big5字符串:' \xC3\x97'1300无效的big5字符串:“C39720”

我的数据库都不是中文的,或者从来没有使用过Big5字符集

如果复制模式创建代码,则会得到以下结果:

CREATE DATABASE `sterling` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;

编辑:如果我将泰晤士报符号更改为其他符号,它会起作用,但这仍然无法解释为什么它被视为Big5而不是uft8


编辑:显然有些地方出了问题。如果运行以下查询,将得到以下结果:

SHOW VARIABLES LIKE 'character_set%';

+-----------------------------+------------------------------+
| 'character_set_client',     | 'big5'                       |
+-----------------------------+------------------------------+
| 'character_set_connection', | 'big5'                       |
+-----------------------------+------------------------------+
| 'character_set_database',   | 'utf8mb4'                    |
+-----------------------------+------------------------------+
| 'character_set_filesystem', | 'binary'                     |
+-----------------------------+------------------------------+
| 'character_set_results',    | 'big5'                       |
+-----------------------------+------------------------------+
| 'character_set_server',     | 'utf8mb4'                    |
+-----------------------------+------------------------------+
| 'character_set_system',     | 'utf8'                       |
+-----------------------------+------------------------------+
| 'character_sets_dir',       | '/usr/share/mysql/charsets/' |
+-----------------------------+------------------------------+

但是我的
my.cnf
显然有
默认字符集=utf8mb4
和它的所有变体在每个适用的部分下。。。我将重新启动我的MySQL服务器,因为有些东西肯定是一只脚。

Welp。我重新启动了服务器,但它再也没有回来。我尝试了几乎所有MySQL服务器修复步骤,但没有任何效果。最终我让它在安全模式下启动,innodb force标志设置为6,然后我就可以使用HeidiSQL将所有数据取出(mysqlddump刚刚挂起,从未启动,但HeidiSQL实现了自己的导出)。尽管如此,我仍然有165张桌子中的3张我根本看不懂

好的。我重新启动了服务器,但它再也没有回来。我尝试了几乎所有MySQL服务器修复步骤,但没有任何效果。最终我让它在安全模式下启动,innodb force标志设置为6,然后我就可以使用HeidiSQL将所有数据取出(mysqlddump刚刚挂起,从未启动,但HeidiSQL实现了自己的导出)。尽管如此,我仍然有165张桌子中的3张我根本看不懂

选中
SHOW CREATE FUNCTION getreadablesize
——它可能是很久以前创建为big5的检查
显示创建函数getreadablesize
——可能它很久以前就被创建为big5