我知道它看起来像重复,但我找到的解决方案对我没用。
我卸载了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 ;
答案 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
然后重新启动所有终端。