Подтвердить что ты не робот

Невозможно загрузить из mysql.proc. Возможно, таблица повреждена

Я знаю, что это похоже на дубликат, но решения, которые я нашел, не работают для меня. Я удалил mysql 5.1 и установил 5.6, и я хотел бы импортировать предыдущий sql файл экспорта previouse. Но есть некоторая функция, которая делает эту ошибку в этом файле экспорта. Я нашел и запустил команду:
.. /bin mysql mysql_upgrade -uroot -p --force но если я понимаю, он работает только при обновлении, а не при установке. Есть ли какое-то решение для меня?

Спасибо!

EDIT: Я удалил определение функции из файла импорта, и импорт был выполнен. Но если я хочу переопределить эту функцию вручную, она покажет мне ту же ошибку "невозможно загрузить из 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 ;
4b9b3361

Ответ 1

Была аналогичная проблема после восстановления db-дампа от mysql-5.5.29 до mariadb-5.5.41. mysql_upgrade исправил проблему

$ mysql_upgrade -u root -pxxx 

В соответствии с руководством mysql,

Вы должны выполнять mysql_upgrade при каждом обновлении MySQL.

Ответ 2

Большинство людей, у которых есть эта проблема, рекомендуют модернизировать MySQL. Если вы находитесь в такой конфигурации, как я, в которой это происходит, когда вы пытаетесь настроить SLAVE node для репликации с MASTER node, вы действительно не хотите испортить версии.

Я имею в виду, что в моем случае у меня был ОС Windows MASTER node и был настроен Linux SLAVE node (так, сначала мы делаем танец mysqldump). Поскольку модернизация MySQL немного сложнее в Linux (точнее, на самом деле лучше не делать этого, чтобы пользоваться стабильностью пакетов Linux, которые, например, поступают из вашего дистрибутива LTS), может быть, это просто хорошая идея, чтобы убедиться что версия MySQL, которую у вас есть в ОС Windows, работает с той же версией, что и ваша версия MySQL, в вашей ОС Linux.

Как только я убедился, что обе версии одинаковы, mysqldump и восстановление работали, и я мог правильно настроить SLAVE node, не получив ужасную ошибку Cannot load from mysql.proc. The table is probably corrupted..

Надеюсь, что это поможет.