来自bash脚本的mysql锁表

时间:2016-07-20 19:34:57

标签: mysql bash locking

我有一个bash脚本试图将我的数据库中的特定表锁定为READ Only。这是我正在尝试执行的命令:

 mysql -u root -p -e "LOCK TABLES db_name.table1 READ, db_name.table2 READ;"

这实际上并没有锁定表,因为我能够更新我试图锁定上面的表。当我从shell运行以下命令时,它可以工作:

 mysql -u root -p

(这将我带入mysql,我输入以下内容)

 LOCK TABLES db_name.table1 READ, db_name.table2 READ;

这实际上锁定了数据库中的表,因为我无法写入任何内容或更新这些表中的任何内容。

有谁知道我做错了什么?

2 个答案:

答案 0 :(得分:0)

Per Marc B上面的评论:

关闭连接时,mysql会清除。你的cli将锁定表,然后退出,导致mysql清理并释放锁。您需要在锁定活动的整个过程中保持连接

答案 1 :(得分:0)

MySQL在关闭连接时清理。这意味着您的mysql ....命令行将连接,锁定表,然后退出 - 关闭连接,导致锁被释放。

你需要保持"锁定"连接你想要的整个时间/需要锁定。