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

时间:2017-06-29 14:55:32

标签: mysql character-encoding

我不知道这里发生了什么。我的一个数据库服务器在尝试创建一个函数时会给我这个错误(适用于所有其他服务器):

我的功能是

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'

我的DB没有中文,或者曾经使用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显然有default-character-set = utf8mb4及其在每个适用部分下的所有变体......我将重新启动我的MySQL服务器,因为某些东西绝对是一个脚。

1 个答案:

答案 0 :(得分:0)

韦尔普。我重新启动了服务器,它再也没有回来。我尝试了几乎所有存在的MySQL服务器修复步骤,但没有任何效果。最终我让它以安全模式启动,并将innodb force标志设置为6,然后我就可以使用HeidiSQL将所有数据拉出来(mysqlddump只是挂起并且从未启动过,但是HeidiSQL实现了自己的导出。)。即便如此,虽然我的165张桌子中仍有3张我根本无法阅读。