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

19

Я знаю, что это похоже на дубликат, но решения, которые я нашел, не работают для меня. Я удалил 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 ;
    
задан Čamo 13.01.2015 в 10:28
источник
  • Хорошо, я нашел это: mysql \ bin mysql_upgrade.exe -u root -pxxx --force, и он работает. –  Čamo 13.01.2015 в 17:18

2 ответа

30

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

$ mysql_upgrade -u root -pxxx 

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

  

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

    
ответ дан ffeast 13.05.2015 в 22:50
источник
  • Просто комментарий для тех, кто использует мам, то же самое относится, но mysql_upgrade не будет в вашем пути, поэтому запустите: / Applications / MAMP / Library / bin / mysql_upgrade -u root -p root –  Christof 21.02.2016 в 13:30
  • и для пользователей mac os: / usr / local / mysql / bin / mysql_upgrade -u root -proot –  Bjørson Ålmer 07.02.2017 в 12:47
1

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

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

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

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

    
ответ дан knocte 07.07.2016 в 16:14
источник