MySQL 1157: Table is read-only.

  1. Check the file system where the MySQL data directory is located to ensure it's not mounted as read-only. Use the command `mount` to see mount options for all file systems.



  1. Verify the permissions of the database table files in the MySQL data directory. Use `ls -l /var/lib/mysql/yourdatabasename` to list permissions and ensure the MySQL user has write permissions.



  1. Check if the MySQL table is marked as read-only. Connect to the MySQL server using `mysql -u username -p`, then run `SHOW TABLE STATUS LIKE 'yourtablename';` Look for the `Comment` field to see if it indicates the table is read-only.



  1. Ensure there's enough disk space on the drive where the MySQL data directory is located. Use `df -h` to check disk space usage.



  1. Review the MySQL error log for any additional messages related to the read-only issue. The error log location varies but often found in `/var/log/mysql/error.log`. Use `tail -n 100 /var/log/mysql/error.log` to view the last 100 lines.



  1. If the table is part of a replication setup, ensure that it is not set to be read-only due to replication rules. Query the `readonly` and `superreadonly` global variables by connecting to MySQL and running `SHOW VARIABLES LIKE 'readonly';` and `SHOW VARIABLES LIKE 'superreadonly';`.



  1. For InnoDB tables, check if there's an ongoing ALTER TABLE operation or a metadata lock that might cause the table to be read-only temporarily. Connect to MySQL and run `SHOW ENGINE INNODB STATUS\G` and `SHOW FULL PROCESSLIST;` to investigate.



  1. Attempt to flush the table if it's safe to do so, which can sometimes clear unexpected states. Connect to MySQL and run `FLUSH TABLES yourtablename;`.



Each step is directly actionable and should be executed in an environment where the user has the necessary permissions to perform system and MySQL commands.

Master

MySQL

in Minutes — Grab the Ultimate Cheatsheet

(Perfect for DevOps & SREs)

Most-used commands
Real-world configs/examples
Handy troubleshooting shortcuts
Your email is safe with us. No spam, ever.

Thankyou for your submission

We have sent the whitepaper on your email!
Oops! Something went wrong while submitting the form.

MySQL

Cheatsheet

(Perfect for DevOps & SREs)

Most-used commands
Your email is safe with us. No spam, ever.

Thankyou for your submission

We have sent the whitepaper on your email!
Oops! Something went wrong while submitting the form.

MORE ISSUES

Made with ❤️ in Bangalore & San Francisco 🏢

Doctor Droid