2012-03-05 89 views
19

當我想在我的表執行update查詢我得到了一個錯誤說:表是「只讀」

1036 - 表data是隻讀的。

我該如何解決這個問題?

/var/db/mysql中的表屬性設置爲777

'修復表'功能似乎沒有幫助。

有什麼我可以做的嗎?

回答

24

誰擁有/ var/db/mysql和他們在哪個組中,應該是mysql:mysql。您還需要重新啓動mysql的更改生效

還檢查當前登錄的用戶有訪問權限授予更新

1

MySQL對數據庫文件沒有寫入權限。檢查文件的權限和所有者。

+0

如果您更改權限手動別忘發出FLUSH PRIVILEGES命令。 – Jody 2012-03-05 23:57:03

4

你應該改變所有者MYSQL:MYSQL。

使用此命令:其他chown -Rf mysql:mysql /var/lib/mysql/DBNAME

+0

謝謝,使用'-Rf'參數爲我工作! – 2014-05-06 14:10:38

-2

的一種方式收到此錯誤是一個「贊」的語句創建表,並作爲源使用合併表。這樣新創建的表是隻讀的,不能「接收」任何新記錄。

所以

CREATE TABLE ic.icdrs_kw37 LIKE ic.icdrs ... #<- a merged table. 

則:

REPLACE INTO ic.icdrs_kw37 ... # -> "Table is read-only" 

錯誤或意見?

20

在我的情況下,MySQL配置文件有innodb_force_recovery = 1。評論說,解決了這個問題。希望它能幫助別人。

+0

innodb_force_recovery是問題,請註釋此行或將其刪除 – Thoman 2016-12-18 11:08:23

+0

這也適用於我。謝謝! – 2017-05-26 19:23:01

+0

在/etc/my.cnf我設置了:innodb_file_per_table = 0和innodb_force_recovery = 0。然後,重新啓動mysql服務,最後它的工作原理!謝謝 – atwebceo 2017-06-07 02:16:09

2

(這個答案是相關的標題,但沒有原來的問題。)

如果你(像我)正試圖臨時修改通過MySQL工作臺界面數據:

  • 如果表沒有主鍵,MySQL Workbench沒有辦法識別你想要修改的行,所以你不能修改它。

  • 這種情況下的解決方案是通過另一條路徑更改數據,或者只是將主鍵添加到表中。

在任何情況下,我希望它可以幫助別人:)