升级 8.0.13 --> 8.0.15 后,MySql Server 失败,错误代码 = 1265

升级 8.0.13 --> 8.0.15 后,MySql Server 失败,错误代码 = 1265

从 MySql 8.0.13(从源代码编译)升级到 MySql 8.0.15 后,MySql Server 无法启动。日志:

2019-02-12T10:09:52.275336Z 1 [ERROR] [MY-013178] [Server] Execution of server-side SQL statement 'INSERT INTO routines SELECT * FROM mysql.routines' failed with error code = 1265, error message = 'Daten abgeschnitten für Feld 'sql_mode' in Zeile 7'.
2019-02-12T10:09:52.302630Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2019-02-12T10:09:52.302856Z 0 [ERROR] [MY-010119] [Server] Aborting

“Daten abgeschnitten für Feld” 的意思是“字段数据被截断”——这是德语版本......

表检查器未发现任何错误 - 我该如何解决这个问题?

答案1

错误说明了一切:

该命令 的 SELECT 第 7 行字段INSERT INTO routines SELECT * FROM mysql.routines 的数据已被截断。sql_mode

因此在返回的第 7 行中,表的SELECT * FROM mysql.routines列被定义为太小,无法从表的匹配列中接收值。sql_moderoutinesmysql.routines

答案2

我自己找到了解决方案。在旧的 mysql 8.0.13 服务器上,我更正了其中一个存储过程的字段 SQL_MODE,结果太长了。

从 INFORMATION_SCHEMA.ROUTINES 中选择*;

我发现一些(旧的)存储过程不再需要,其中一个存储过程的 SQL_MODE 字段中的条目太长。删除该存储过程后,启动新的 8.0.15 服务器和“mysql_upgrade”,一切正常,服务器现在可以无错误地启动。

相关内容