Mysql

將 MySQL 從 5.0.* 升級到 5.1.* 後解決 mysql.proc 的問題

  • September 19, 2012

像許多其他人一樣,我們將 MySQL 實例從 5.0.* 升級到 5.1.49。從那時起,當我們執行某些操作時,我們一直遇到一個重複自身的錯誤:

  • 試圖查看或執行儲存過程
  • 在為 ON INSERT 操作添加觸發器後嘗試插入表
  • 正在執行SELECT LENGHT(description), id FROM table(拼寫錯誤……當LENGTH拼寫正確時,錯誤未顯示)

有問題的錯誤:

mysql.proc 的列數錯誤。預期 20,發現 16。該表可能已損壞。

已被報告為一個錯誤(基本上,缺乏向後兼容性),但對於如何解決該問題似乎有些混亂:

  • MySQL 的文件說解決方案是在升級到 5.1 後再次轉儲儲存過程,然後再次恢復它們。我之前提到的錯誤報告表明這有可疑的結果。
  • 錯誤報告建議mysql_upgrade作為一種可能的解決方案執行(儘管有一些有關警告)。但是,據其他地方報導,這種解決方案並不總是有效。

不幸的是,我沒有一個測試盒來測試可能的解決方案,因為我們的開發盒正在等待作業系統升級以允許我們安裝我們想要安裝的 MySQL 版本。我很猶豫在我們的生產環境中嘗試任何解決方案,除非它已被遇到此問題的人驗證為有效。

除了等待 MySQL 的官方更新檔或解決方案之外,解決此問題的正確方法是什麼?

雖然失去我們的儲存過程並不理想,但它也是我們願意採取的解決問題的途徑,前提是沒有更好的替代方案並且它會乾淨地解決問題。

在另一台電腦上安裝相同版本的 MySQL 的新副本,並將其 mysql.proc 表複製到損壞的伺服器。這會讓你得到一張乾淨、正確的桌子。然後,重新創建您的儲存過程。

我遇到了這個問題,並認為我會提到執行“mysql_upgrade –force”為我修復了它。

我從 5.0 升級到 5.1 到 5.5。有趣的是,我已經執行了 mysql_upgrade,這就是我需要添加 –force 選項的原因。希望這可以幫助某人。

引用自:https://dba.stackexchange.com/questions/956