mysql 修改表结构提示 MySQL said: Table is read only
以下是我遇到的問題,在我的數據庫表里面添加字段的時候提示:MySQL said: Table is read only
百度了一下,找到以下方法,但是行不通:
1、找到mysql 數據庫目錄,并修改權限
chmod -R 777 /usr/local/mysql/data/2、修改數據庫文件夾的用戶組: chown -R mysql:mysql 數據庫文件夾
3、刷新數據:mysqladmin 命令一般在/usr./local/mysql/bin 目錄下 mysqladmin -u root -p flush-tables
編輯mysql配置文件 my.cnf,看是否設置了?
innodb_force_recovery > 0 如果設置了這個,將他注釋掉由于我之前數據庫無法啟動,在my.cnf中添加了如下設置:
innodb_force_recovery = 1 將其注釋掉之后,發現可以正常操作數據庫了
了解mysql中的innodb_force_recovery參數
MySQL數據庫,當innodb表空間損壞時候,嘗試啟動數據庫不成功,可以使用innodb_force_recovery參數進行強制啟動
在主配置文件my.cnf中添加
innodb_force_recovery=6
****************************
innodb_force_recovery參數解釋:
innodb_force_recovery影響整個InnoDB存儲引擎的恢復狀況,默認值為0,表示當需要恢復時執行所有的恢復操作。
當不能進行有效的恢復操作時,mysql有可能無法啟動,并記錄下錯誤日志。
innodb_force_recovery可以設置為1-6,大的數字包含前面所有數字的影響。
當設置參數值大于0后,可以對表進行select,create,drop操作,但insert,update或者delete這類操作是不允許的。
1(SRV_FORCE_IGNORE_CORRUPT):忽略檢查到的corrupt頁
2(SRV_FORCE_NO_BACKGROUND):阻止主線程的運行,如主線程需要執行full purge操作,會導致crash
3(SRV_FORCE_NO_TRX_UNDO):不執行事務回滾操作。
4(SRV_FORCE_NO_IBUF_MERGE):不執行插入緩沖的合并操作。
5(SRV_FORCE_NO_UNDO_LOG_SCAN):不查看重做日志,InnoDB存儲引擎會將未提交的事務視為已提交。
6(SRV_FORCE_NO_LOG_REDO):不執行前滾的操作。
***************************
修復表空間受損的表:
數據起來后,innodb類型的表不能寫操作,但可以讀,此時對表做check,查找到異常的表,讀取出來,導入到myisam表里面,drop原表
然后在my.cnf中去掉innodb_force_recovery的設置,重啟mysql
把myisam表轉成innodb表;
總結
以上是生活随笔為你收集整理的mysql 修改表结构提示 MySQL said: Table is read only的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 理解nodejs中函数的参数的来由
- 下一篇: php中CI框架定义全局变量