Question

From what I read in the following: http://dev.mysql.com/doc/refman/5.0/en/lock-tables.html, the LOCK TABLES statement is only good for the current session. How can I permanently lock specific tables to make them read-only, for all connection sessions, until I explicitly unlock them?

Was it helpful?

Solution

I dont think you can simply lock any table like that. The best way you can do so is to revoke all update, insert and delete privileges

Somthing like this:

REVOKE DROP, INSERT, TRUNCATE ON database.table FOR 'user'@'host'

OTHER TIPS

For large, time-consuming operations like that, one good option can be to copy the data to a new location, to do your manipulations. This essentially makes a snapshot of the data, leaving the database unhindered (and possibly still accepting reads and writes) while you perform your operation.

  1. Stop MySQL
  2. Copy data files to new location.
  3. Restart MySqL
  4. Perform manipulations on the data copy.
  5. Delete copy (by way of DROP TABLE)
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top