Не удается загрузить из 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

И перезапустите все терминалы.

Другие вопросы по тегам