无法从mysql.proc加载。该表可能已损坏

时间:2015-01-13 09:28:19

标签: mysql import importerror

我知道它看起来像重复,但我找到的解决方案对我没用。 我卸载了mysql 5.1并安装了5.6,我想先导入previouse export 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 ;

3 个答案:

答案 0 :(得分:41)

将数据库转储从mysql-5.5.29重新分配到mariadb-5.5.41后出现类似问题。 mysql_upgrade修复了问题

$ mysql_upgrade -u root -pxxx 

根据mysql manual

  

每次升级MySQL时都应该执行mysql_upgrade。

答案 1 :(得分:1)

出现此问题的大多数人都建议升级MySQL。如果您正在使用像我这样的配置,当您尝试设置SLAVE节点从MASTER节点进行复制时,会发生这种情况,您真的不想搞砸版本。

我的意思是,在我的情况下,我有一个Windows MASTER节点并且正在设置一个Linux SLAVE节点(所以,先做mysqldump舞蹈)。由于升级MySQL在Linux中有点棘手(或者更确切地说,实际上最好不要这样做,以享受Linux软件包的稳定性,例如,来自你的LTS发行版),这可能只是一个好主意,以确保您在Windows操作系统中使用的MySQL版本与Linux操作系统中的MySQL版本版本相同。

一旦我确定两个版本相同,mysqldump和恢复工作正常,我可以正确设置SLAVE节点而不会收到可怕的错误Cannot load from mysql.proc. The table is probably corrupted.

希望这有帮助。

答案 2 :(得分:1)

我正在使用brew,所以: brew upgrade mysql@5.6有帮助

然后更新个人资料bash

echo 'export PATH="/usr/local/opt/mysql@5.6/bin:$PATH"' >> /Users/mike/.bash_profile

然后重新启动所有终端。