我不知道这是怎么回事。我的其中一台数据库服务器在尝试创建函数(在所有其他服务器上都可以使用)时给了我该错误:
我的功能是
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
显然在每个适用的部分下都有default-character-set = utf8mb4
及其所有变体...我将重新启动MySQL服务器,因为最肯定的是脚。 最佳答案
威尔我重新启动了服务器,但它再也没有回来。我尝试了几乎所有存在的MySQL服务器修复步骤,但没有任何效果。最终,我将innodb强制标志设置为6,使其以安全模式启动,然后我可以使用HeidiSQL提取所有数据(mysqlddump只是挂起并且从未启动,但是HeidiSQL实现了自己的导出)。即使这样,我仍然有165张桌子中的3张我根本看不懂。