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

无法从mysql.proc加载。表可能已损坏,mysql,import,importerror,Mysql,Import,Importerror,我知道这看起来像是重复的,但我发现的解决方案对我不起作用。 我卸载了MySQL 5.1并安装了5.6,我想将以前导出的SQL文件导入回去。但是有一个函数会导致导出文件出错。 我找到并运行了以下命令: ../bin mysql mysql_upgrade -uroot -p --force 但如果我理解的话,它只在升级时起作用,而不在安装时起作用。有什么解决办法吗 我还从导入文件中删除了函数定义,并完成了导入。但是,如果我想手动重新定义该函数,它会显示相同的错误“cannotloadfromsm

我知道这看起来像是重复的,但我发现的解决方案对我不起作用。 我卸载了MySQL 5.1并安装了5.6,我想将以前导出的SQL文件导入回去。但是有一个函数会导致导出文件出错。 我找到并运行了以下命令:

../bin mysql mysql_upgrade -uroot -p --force
但如果我理解的话,它只在升级时起作用,而不在安装时起作用。有什么解决办法吗

我还从导入文件中删除了函数定义,并完成了导入。但是,如果我想手动重新定义该函数,它会显示相同的错误“cannotloadfromsmysql.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 ;
分隔符$$
创建函数`randStr250`(长度int)返回varchar(250)字符集utf8
开始
声明s varchar(250);
我宣布我是tinyint;
设置s=“”;
如果(长度6)那么
set s=“参数应在1-6范围内。您的值超出此范围。”;
其他的
设置i=0;

而我在将数据库转储从mysql-5.5.29恢复到mariadb-5.5.41后也遇到了类似的问题。mysql\u升级修复了这个问题

$ mysql_upgrade -u root -pxxx 
据报道,

每次升级mysql时都应该执行mysql\u升级


大多数有这个问题的人都建议升级MySQL。如果您处于一种配置中,比如我,当您试图设置从节点以从主节点复制时,就会发生这种情况,那么您真的不想弄乱版本

我的意思是,在我的例子中,我有一个Windows主节点,正在设置一个Linux从节点(因此,首先要做mysqldump舞蹈)。由于在Linux中升级MySQL有点棘手(或者更确切地说,最好不要这样做,以享受来自LTS发行版的Linux包的稳定性),确保Windows操作系统中的MySQL版本与Linux操作系统中的MySQL版本运行相同的版本可能是一个好主意

一旦我确保两个版本相同,mysqldump和restore就可以正常工作,并且我可以正确设置从节点,而不会收到可怕的错误
无法从mysql.proc加载。表可能已损坏。

希望这有帮助。

我正在使用brew,因此:
brew升级mysql@5.6
帮助

然后更新概要文件bash

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

然后重新启动所有终端。

好的,我找到了:mysql\bin mysql\u upgrade.exe-u root-pxxx--force,它可以工作。只需给那些使用mamp的人一个注释,同样的事情也适用,但是mysql\u升级不会出现在您的路径中,所以运行:
/Applications/MAMP/Library/bin/mysql\u upgrade-u root-p root
,对于mac os用户:
/usr/local/mysql/bin/mysql\u upgrade-u root-proot
在完成完整的debian系统升级后,效果非常好!多谢各位
要升级,请使用旧的数据目录启动新的MySQL二进制文件。修复用户表是自动完成的。升级后不需要重新启动。
Solved-升级后的phpMyAdmin,如下所示-