Je sais que cela ressemble à un doublon, mais les solutions que j'ai trouvées ne fonctionnent pas pour moi. J'ai désinstallé mysql 5.1 et installé 5.6 et je voudrais réimporter le fichier sql d'export précédent. Mais il y a une fonction qui fait cette erreur dans ce fichier d'exportation. J'ai trouvé et exécuté la commande:
../ bin mysql mysql_upgrade -uroot -p --force mais si je comprends bien, cela ne fonctionne que lors de la mise à niveau, pas lors de l'installation. Y a-t-il une solution pour moi?
Merci!
EDIT: J'ai supprimé la définition de la fonction du fichier d'importation et l'importation est terminée. Mais si je veux redéfinir cette fonction manuellement, cela me montre la même erreur "impossible de charger depuis mysql.proc". La fonction est là:
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 ;
J'ai eu un problème similaire après avoir redistribué un vidage de base de données de mysql-5.5.29 à mariadb-5.5.41. mysql_upgrade a résolu le problème
$ mysql_upgrade -u root -pxxx
Selon le manuel mysql ,
Vous devez exécuter mysql_upgrade chaque fois que vous mettez à niveau MySQL.
La plupart des gens qui ont ce problème recommandent de mettre à niveau MySQL. Si vous êtes dans une configuration, comme moi, dans laquelle cela se produit lorsque vous essayez de configurer un nœud SLAVE pour répliquer à partir d'un nœud MASTER, vous ne voulez pas vraiment gâcher les versions.
Je veux dire, dans mon cas, j'avais un nœud Windows MASTER et je configurais un nœud Linux SLAVE (donc, je fais d'abord la danse mysqldump). Étant donné que la mise à niveau de MySQL est un peu plus délicate sous Linux (ou plutôt, il vaut mieux ne pas le faire, pour profiter de la stabilité des packages Linux qui, par exemple, proviennent de votre distribution LTS), c'est peut-être juste une bonne idée de vous assurer que la version MySQL que vous avez dans votre système d'exploitation Windows exécute la même version que votre version MySQL dans votre système d'exploitation Linux.
Une fois que je me suis assuré que les deux versions étaient identiques, le mysqldump et la restauration ont fonctionné, et j'ai pu configurer correctement un nœud SLAVE sans recevoir l'erreur terrible Cannot load from mysql.proc. The table is probably corrupted.
.
J'espère que cela t'aides.