Mariadb

“顯示事件”失敗並顯示“錯誤程式碼:1545。無法打開 mysql.event”

  • August 1, 2019

我安裝了 MariaDB 5.5.56(預設的 CentOS 7 軟體包)。

虛擬機執行在一台主機上,該主機在訪問其儲存時遇到了一些問題。這導致作業系統以只讀方式重新掛載一些文件系統。

該數據庫是一個複制從屬數據庫,並通過從主數據庫導入備份來重建。(在重新啟動和 之後fsck,使 root fs 和其他人恢復讀寫)(似乎沒有重大數據損壞,但由於重複條目而複製失敗,因此恢復似乎更安全)

mysqldump失敗了mysqldump: Couldn't execute 'show events': Failed to open mysql.event (1545)

事件目前未使用,但包含在後面,以防將來使用。

我試過執行REPAIR TABLE mysql.event,但SHOW EVENTS仍然失敗Error Code: 1545. Failed to open mysql.event

SELECT * from mysql.event在主伺服器上工作並且不返回任何行。

在主伺服器上(不受儲存問題的影響並執行較舊的 MySQL 版本,SHOW EVENTS按預期工作並且不返回任何結果)

重新啟動 MariaDB 後,SHOW TABLES現在失敗並顯示Error Code: 1577. Cannot proceed because system tables used by Event Scheduler were found damaged at server start. SELECT * from mysql.event仍然有效,返回 0 行。

mysqlcheck --all-databases --check-upgrade -p為所有表返回“OK”,包括 mysql.event。

首先,讓mysql.event桌子工作。(如果有效,請考慮它的工作SELECT * from mysql.event)。按此順序嘗試這些(在每個步驟後檢查)

  • REPAIR TABLE mysql.event
  • mysqlcheck mysql -p # use the repair options if it finds issues
  • myisamchk /var/lib/mysql/mysql/event.MYI# 路徑取決於安裝和配置。發現問題時需要修復選項。
  • 刪除並重新創建 mysql.event (SHOW CREATE TABLE mysql.event;在同一 MariaDB / MySQL 版本的工作版本上獲取語句,或從這個答案中獲取)

重新啟動數據庫並檢查是否仍然存在錯誤。(在 SELECT 工作之後)

使用 mysql.event 工作(如果 SELECT 工作)並且SHOW EVENTS仍然失敗:

  • mysql_upgrade -p --force# 這似乎是擺脫 Error Code: 1577 消息的唯一方法,至少用不同版本的 mysql.event CREATE 語句重新創建它
  • 重啟 MySQL / MariaDB

SHOW EVENTS現在應該可以工作了。根據問題的嚴重程度,以及解決問題所必需的第一步,您的部分或全部事件可能會失去。

如果您定義了任何事件,請檢查它們是否存在並從備份(或從主設備導出,如果相關)恢復它們。

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