Не удается загрузить из mysql.proc. Таблица, вероятно, повреждена
Я знаю, что это выглядит как дубликат, но решения, которые я нашел, не работают для меня. Я удалил MySQL 5.1 и установил 5.6, и я хотел бы импортировать предыдущий файл экспорта SQL обратно. Но есть некоторая функция, которая делает эту ошибку в этом файле экспорта. Я нашел и запустил команду:
../bin mysql mysql_upgrade -uroot -p --force, но если я знаю, это работает только при обновлении, а не при установке. Есть ли какое-то решение для меня?
Спасибо!
РЕДАКТИРОВАТЬ: я удалил определение функции из файла импорта, и импорт завершен. Но если я хочу переопределить эту функцию вручную, она показывает ту же ошибку "не могу загрузить из mysql.proc". Функция здесь:
DELIMITER $$
CREATE FUNCTION `randStr250`(length int) RETURNS varchar(250) CHARSET utf8
begin
declare s varchar(250);
declare i tinyint;
set s="";
if (length<1 or length>6) then
set s="Parameter should be in range 1-6. Your value was out of this range.";
else
set i=0;
while i<length do
set s=concat(s,sha1(now()));
set i=i+1;
end while;
end if;
return s;
end $$
DELIMITER ;
2 ответа
Возникла похожая проблема после восстановления дампа базы данных из mysql-5.5.29 в mariadb-5.5.41. mysql_upgrade исправил проблему
$ mysql_upgrade -u root -pxxx
Согласно руководству по MySQL,
Вы должны выполнять mysql_upgrade каждый раз, когда вы обновляете MySQL.
Большинство людей, которые имеют эту проблему, рекомендуют обновить MySQL. Если вы находитесь в конфигурации, подобной мне, в которой это происходит, когда вы пытаетесь настроить узел SLAVE для репликации с узла MASTER, вам не нужно возиться с версиями.
Я имею в виду, что в моем случае у меня был узел Windows MASTER, и я настраивал узел Linux SLAVE (поэтому сначала выполнял танец mysqldump). Поскольку обновление MySQL в Linux немного сложнее (точнее, на самом деле лучше этого не делать, чтобы наслаждаться стабильностью пакетов Linux, которые, например, поступают из вашего дистрибутива LTS), возможно, это хорошая идея убедиться, что что версия MySQL, которая у вас есть в вашей ОС Windows, работает под той же версией, что и ваша версия MySQL в вашей ОС Linux.
Как только я убедился, что обе версии одинаковы, mysqldump и restore сработали, и я смог правильно настроить узел SLAVE без получения ужасной ошибки. Cannot load from mysql.proc. The table is probably corrupted.
,
Надеюсь это поможет.
Я использую варево так:brew upgrade mysql@5.6
помогает
затем обновите профиль bash
echo 'export PATH="/usr/local/opt/mysql@5.6/bin:$PATH"' >> /Users/mike/.bash_profile
И перезапустите все терминалы.