2012-03-05 29 views
19

Khi tôi muốn thực hiện một truy vấn update trên bàn của tôi, tôi nhận được một lỗi nói:Bảng là 'chỉ đọc'

1036 - Bảng data là chỉ đọc.

Tôi làm cách nào để khắc phục điều đó?

Thuộc tính bảng trong /var/db/mysql được đặt thành 777.

Chức năng 'Sửa bảng' có vẻ không hữu ích.

Tôi có thể làm gì với điều đó không?

Trả lời

24

người sở hữu/var/db/mysql và nhóm họ là gì, phải là mysql: mysql. bạn cũng sẽ cần phải khởi động lại mysql để thay đổi có ảnh hưởng đến

cũng kiểm tra xem hiện đang đăng nhập người dùng có quyền truy cập GRANT để cập nhật

1

MySQL không có quyền ghi vào tệp cơ sở dữ liệu. Kiểm tra quyền và chủ sở hữu của tệp.

+0

nếu bạn thay đổi các điều khoản bằng tay đừng quên đưa ra một lệnh FLUSH PRIVILEGES. – Jody

4

Bạn nên thay đổi chủ sở hữu để MYSQL: MYSQL.

Sử dụng lệnh này: chown -Rf mysql:mysql /var/lib/mysql/DBNAME

+0

Cảm ơn, bằng cách sử dụng đối số '-Rf' làm việc cho tôi! –

-2

Một cách khác để nhận được lỗi này là để tạo ra bảng của bạn với một "Giống như" tuyên bố và sử dụng như là nguồn một bảng sáp nhập. Bằng cách đó, bảng mới tạo là chỉ đọc và không thể "nhận" bất kỳ bản ghi mới nào.

nên

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

thì:

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

lỗi hoặc tính năng?

20

Trong trường hợp của tôi, tệp cấu hình mysql có innodb_force_recovery = 1. Nhận xét rằng đã giải quyết được vấn đề. Hy vọng nó sẽ giúp ai đó.

+0

innodb_force_recovery là vấn đề, bình luận dòng này hoặc loại bỏ nó – Thoman

+0

Điều này làm việc cho tôi quá. Cảm ơn! –

+0

Trong /etc/my.cnf Tôi đặt: innodb_file_per_table = 0 và innodb_force_recovery = 0. sau đó, khởi động lại dịch vụ mysql và cuối cùng nó hoạt động! Cảm ơn – atwebceo

2

(Câu trả lời này có liên quan đến các tiêu đề, nhưng không với câu hỏi ban đầu.)

Trong trường hợp bạn (như tôi) đang cố gắng để tạm thời thay đổi dữ liệu thông qua giao diện MySQL Workbench:

  • Nếu bảng không có khóa chính, MySQL Workbench không có cách nào để xác định hàng bạn đang cố thay đổi, do đó bạn không thể thay đổi nó.

  • Giải pháp trong trường hợp đó là thay đổi dữ liệu qua một tuyến đường khác hoặc chỉ cần thêm khóa chính vào bảng.

Trong mọi trường hợp, tôi hy vọng nó sẽ giúp người :)

Các vấn đề liên quan