萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

解決 MySQL #1036 錯誤:Table is read only 的完整指南

MySQL #1036 錯誤成因與解決方案

資料庫遷移看似順利完成,但實際操作時卻發現只能讀取資料,無法寫入任何資訊,系統提示 #1036 - Table '*' is read only,表示資料表處於唯讀狀態。這通常是因為檔案系統權限設定不當或 MySQL 服務未正確重新載入表緩存所導致。

核心解決步驟

  1. 修正資料目錄權限與擁有者
    透過 SSH 登入伺服器,將資料庫目錄(以 dedeadmin 為例)權限設為 777,並將擁有者改為 mysql 用戶與群組:
chmod -R 0777 /usr/local/mysql/var/dedeadmin/
chown -R mysql:mysql /usr/local/mysql/var/dedeadmin/
  1. 執行 flush-tables 指令重新載入表緩存
    找到 mysqladmin 位置(通常在 /usr/local/mysql/bin/),執行以下指令並輸入 root 密碼:
cd /usr/local/mysql/bin
./mysqladmin -u root -p flush-tables

執行成功後無任何提示,此時測試讀寫操作即可恢復正常。

完整 Linux 環境修復流程

  1. 定位資料庫檔案目錄(如 /usr/local/mysql/var/xx)
  2. 修改所有檔案擁有權:chown mysql.mysql *.*
  3. 關閉 MySQL 服務:killall mysqld
  4. 以安全模式啟動 MySQL:進入 bin 目錄執行 ./mysqld_safe --user=mysql &

實戰案例回顧

將系統部署至伺服器後,存取特定資料表即出現 #1036 - Table ' ' is read only。即便將目錄權限改為 777 並調整擁有者為 mysql,問題依舊。最終透過執行 mysqladmin flush-tables 成功解決,遷移作業順利完成。

關鍵提醒:單純修改檔案權限不足以解決此錯誤,必須執行 flush-tables 讓 MySQL 重新載入表元資料,才能真正解除唯讀狀態。

copyright © 萬盛學電腦網 all rights reserved