首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql -表锁错误

Mysql -表锁错误
EN

Stack Overflow用户
提问于 2015-01-09 14:32:34
回答 2查看 3.5K关注 0票数 3

我遇到了一些问题,与表锁定。我在交易中锁定了一定数量的表。LOCK TABLES t1 READ, t2 READ, t3 READ, t4 READ,t5 READ,t6 READ,t7 READ;

在读取它的ok时,但是当我试图写入/更新这个表时,它显示的是错误的表't1‘是用读锁锁定的,不能更新

但是我从来没有锁定过用于写的表,我必须用更新的值写入这些表。

我的目标是需要选择和更新行,而其他人在进程完成之前不应该与上面的表交互。

非常感谢您的解决方案!

EN

回答 2

Stack Overflow用户

发布于 2015-01-09 14:38:03

来自mysql文档

锁定获取规则在当前会话中获取表锁,请使用locks语句。可以使用下列锁类型:

读取本地锁:

持有锁的会话可以读取表(但不能写入表)。

票数 3
EN

Stack Overflow用户

发布于 2016-03-16 09:04:28

代码语言:javascript
复制
MariaDB [test]> lock table super1 read;
Query OK, 0 rows affected (0.00 sec)


MariaDB [test]> select * from super1;
+----+
| id |
+----+
|  1 |
|  2 |
|  3 |
|  5 |
|  6 |
|  7 |
+----+
6 rows in set (0.00 sec)

MariaDB [test]> insert into super1 VALUE(10);
ERROR 1099 (HY000): Table 'super1' was locked with a READ lock and can't be updted

其他会话也可以选择

代码语言:javascript
复制
MariaDB [test]> unlock tables;
Query OK, 0 rows affected (0.00 sec)

MariaDB [test]> lock table super1 write;
Query OK, 0 rows affected (0.00 sec)

其他会话无法选择

代码语言:javascript
复制
MariaDB [test]> insert into super1 VALUE(10);
Query OK, 1 row affected (0.00 sec)

MariaDB [test]> insert into super1 VALUE(11);
Query OK, 1 row affected (0.00 sec)

MariaDB [test]> unlock tables;
Query OK, 0 rows affected (0.00 sec)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27862834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档