После обновления с MySql 8.0.13 (скомпилированного из исходного кода) до MySql 8.0.15, сервер MySql не может запуститься. Журнал:

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" означает «Данные, усеченные для поля» - это немецкая версия ...

Таблица проверки не находит ошибок - как я могу решить эту проблему?

2 ответа2

0

Я нашел решение сам. На старом сервере mysql 8.0.13 я исправил поле SQL_MODE для одной из хранимых процедур, которая оказалась слишком длинной.

SELECT * FROM INFORMATION_SCHEMA.ROUTINES;

Я нашел некоторые (старые) хранимые процедуры, которые мне больше не нужны, и записи в поле SQL_MODE одной из этих хранимых процедур были слишком длинными. После удаления этой хранимой процедуры, запуска нового сервера 8.0.15 и "mysql_upgrade" все в порядке, теперь сервер может запускаться без ошибок.

0

Ошибка говорит обо всем:

Команда INSERT INTO routines SELECT * FROM mysql.routines свои данные для поля sql_mode в строке 7 SELECT.

Таким образом, в 7-й строке, возвращаемой SELECT * FROM mysql.routines , столбец sql_mode табличных routines был определен как слишком маленький для получения значения из соответствующего столбца таблицы mysql.routines .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .