首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解决mysql.proc在将MySQL从5.0.*升级到5.1.*后出现的问题

问解决mysql.proc在将MySQL从5.0.*升级到5.1.*后出现的问题
EN

Database Administration用户
提问于 2011-01-27 19:41:31
回答 3查看 15.7K关注 0票数 6

和其他许多人一样,我们将MySQL实例从5.0.*升级到5.1.49。从那时起,我们就遇到了一个错误,当我们执行某些操作时,会重复这个错误:

  • 试图查看或运行存储过程
  • 在为ON插入操作添加触发器后尝试插入到表中
  • 执行SELECT LENGHT(description), id FROM table (拼写错误.当LENGTH拼写正确时,错误不会显示)

所涉错误:

mysql.proc的列计数是错误的。预期为20,发现16。表可能已损坏。

这个已经被报告为一种错误 (基本上,缺乏向后兼容性),但是对于如何解决这个问题似乎有些困惑:

  • MySQL文档说,解决方案是在升级到5.1之后再转储存储过程,然后再恢复它们。我前面提到的bug报告表明,这有可疑的结果。
  • bug报告建议将运行mysql_upgrade作为一种可能的解决方案(尽管有一些值得关注的警告)。然而,在其他地方报告一直认为这个解决方案并不总是有效的。

不幸的是,我没有一个测试盒来测试可能的解决方案,因为我们的开发盒正在等待操作系统升级,以便安装我们想要安装的MySQL版本。我不愿意尝试任何解决方案,我们的生产环境,除非它已经被证实是工作的人谁已经遇到这个问题。

,在等待MySQL的官方补丁或解决方案之外,解决这个问题的正确方法是什么?

虽然丢失存储过程并不理想,但如果没有更好的替代方案,并且它将干净地解决问题,这也是我们愿意采取的解决问题的途径。

EN

回答 3

Database Administration用户

回答已采纳

发布于 2011-01-28 08:33:24

在另一台计算机上安装同一版本MySQL的新副本,并将其mysql.proc表复制到故障服务器。这样你就能得到一张干净的,正确的桌子。然后,重新创建存储过程。

票数 6
EN

Database Administration用户

发布于 2011-11-10 23:31:19

我有这个问题,我想我应该提到运行"mysql_upgrade --force“为我解决了这个问题。

我从5.0升级到5.1到5.5。有趣的是,我已经运行了mysql_upgrade,这就是为什么我需要添加-force选项。希望这能帮上忙。

票数 7
EN

Database Administration用户

发布于 2011-09-03 01:47:57

在我的新开发系统上安装了Suse Linux 11.4。MySQL数据库是从旧Suse 11.1框上的前一个版本升级而来的。在复制了我的PHP源代码并配置了我的Apache和PHP服务器之后,我发现当我点击一个试图连接到数据库的页面时,MySQL在抱怨mysql.proc文件的列数错误。

mysql_upgrade命令当时对我的连接犹豫不决,尽管我在MySQL工作台中设置了它。修复MySQL新版本的一个快速而肮脏的方法是使用MySQL工作台创建一个“例程”,或者称为存储过程。这只不过是一张桌子上的一个选择。

访问数据库的页面就出现了。新的数据库版本用正确的列数重写了mysql.proc表(或文件),因为我创建了一个新的存储过程。我备份了旧代码的所有代码,所以之后仅仅是重新加载它们的问题。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档