USE test; CREATE TABLE t1 ( id INT NOT NULL PRIMARY KEY auto_increment, col1 char(255) ) ENGINE=MyISAM; CREATE TABLE t2 ( id INT NOT NULL PRIMARY KEY auto_increment, col1 char(255) ) ENGINE=MyISAM; CREATE TABLE t3 ( id INT NOT NULL PRIMARY KEY auto_increment, col1 char(255) ) ENGINE=MyISAM; CREATE VIEW v1 AS SELECT * FROM t1; CREATE VIEW v2 AS SELECT * FROM t2; INSERT INTO t1 SELECT NULL, REPEAT('a', 255); INSERT INTO t1 SELECT NULL, REPEAT('a', 255) FROM t1; INSERT INTO t1 SELECT NULL, REPEAT('a', 255) FROM t1; INSERT INTO t1 SELECT NULL, REPEAT('a', 255) FROM t1; INSERT INTO t1 SELECT NULL, REPEAT('a', 255) FROM t1; INSERT INTO t1 SELECT NULL, REPEAT('a', 255) FROM t1; INSERT INTO t1 SELECT NULL, REPEAT('a', 255) FROM t1; INSERT INTO t1 SELECT NULL, REPEAT('a', 255) FROM t1; INSERT INTO t1 SELECT NULL, REPEAT('a', 255) FROM t1; INSERT INTO t1 SELECT NULL, REPEAT('a', 255) FROM t1; INSERT INTO t1 SELECT NULL, REPEAT('a', 255) FROM t1; INSERT INTO t1 SELECT NULL, REPEAT('a', 255) FROM t1; INSERT INTO t1 SELECT NULL, REPEAT('a', 255) FROM t1; INSERT INTO t1 SELECT NULL, REPEAT('a', 255) FROM t1; INSERT INTO t1 SELECT NULL, REPEAT('a', 255) FROM t1; INSERT INTO t1 SELECT NULL, REPEAT('a', 255) FROM t1; INSERT INTO t1 SELECT NULL, REPEAT('a', 255) FROM t1; INSERT INTO t1 SELECT NULL, REPEAT('a', 255) FROM t1; INSERT INTO t1 SELECT NULL, REPEAT('a', 255) FROM t1; INSERT INTO t1 SELECT NULL, REPEAT('a', 255) FROM t1; INSERT INTO t1 SELECT NULL, REPEAT('a', 255) FROM t1; INSERT INTO t1 SELECT NULL, REPEAT('a', 255) FROM t1; INSERT INTO t1 SELECT NULL, REPEAT('a', 255) FROM t1; INSERT INTO t2 SELECT * FROM t1; INSERT INTO t3 SELECT * FROM t1; -- Run mysqlhotcopy command: mysqlhotcopy -h 127.0.0.1 -P 5616 -u msandbox -p msandbox test /tmp -- While command is running, concurrent update to t3 should not be possible, but it is: mysql> UPDATE t3 SET col1 = 'new value' where id = 1234; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 The reason is because of the order of commands. From the general log: 140416 19:13:25 25 Connect msandbox@localhost on 25 Query show variables like 'datadir' 25 Query SHOW FULL TABLES FROM `test` WHERE Table_type = 'BASE TABLE' 25 Query SHOW FULL TABLES FROM `test` WHERE Table_type = 'VIEW' 25 Query FLUSH TABLES `test`.`t1`, `test`.`t2`, `test`.`t3` WITH READ LOCK 25 Query LOCK TABLES `test`.`v1` READ, `test`.`v2` READ The LOCK TABLES on the v1 and v2 VIEWs releases the locks held by the FLUSH TABLES command. FLUSH TABLES is also not supported by views.