MySQL错误ERROR 1100(HY000):表't1'未锁定在LOCK TABLES中

mysql> lock table t read; 
查询OK,0行受影响(1分钟3.82秒)

mysql>从测试中显示打开的表; 
+ ---------- + ------- + -------- + ------------- + 
| 数据库| 表| In_use | Name_locked | 
+ ---------- + ------- + -------- + ------------- + 
| 测试| t | 1 | 0 | 
| 测试| t1 | 0 | 0 | 
+ ---------- + ------- + -------- + ------------- + 
2行(0.00秒) )

mysql> select * from t; 
+ ------ + ------ + 
| id | 名称| 
+ ------ + ------ + 
| 1 | aaaa | 
| 2 | bbb | 
| 3 | ddd | 
| 4 | ttt | 
+ ------ + ------ + 
4行集(0.00秒)

mysql> select * From t1; 
ERROR 1100(HY000):表't1'未锁定与LOCK TABLES 
mysql> update t set name ='a'; 
错误1099(HY000):表't'被锁定,并且无法更新
mysql> insert into t1 values(1,'aa'); 
ERROR 1100(HY000):表't1'未锁定与LOCK TABLES 
mysql> delete from t1; 
ERROR 1100(HY000):表't1'未锁定在LOCK TABLES中


MySQL > insert into t values(5,'e'); 
ERROR 1099(HY000):表't'被锁定,并且无法更新
mysql > update t set name ='c'; 
错误1099(HY000):表't'被锁定,并且无法
从t 更新mysql> delete; 
错误1099(HY000):表't'被锁定,并且无法更新



在打开一个sesion2:

mysql> select * from t; 
+ ------ + ------ + 
| id | 名称| 
+ ------ + ------ + 
| 1 | aaaa | 
| 2 | bbb | 
| 3 | ddd | 
| 4 | ttt | 
+ ------ + ------ + 
4行集(0.00秒)


mysql> select * From t1; 
+ ------ + ------ + 
| id | 名称| 
+ ------ + ------ + 
| 1 | a | 
| 2 | b | 
| 3 | d | 
| 3 | d | 
+ ------ + ------ + 
4行集(0.00秒)


mysql> delete from t1 where id = 3; 
查询OK,2行受影响(0.03秒)


mysql> select * From t1; 
+ ------ + ------ + 
| id | 名称| 
+ ------ + ------ + 
| 1 | a | 
| 2 | b | 
+ ------ + ------ +


mysql> insert into t1 values(3,'d'); 
查询OK,1行受影响(0.03秒)
2行集(0.00秒)


mysql> insert into t values(3,'d'); 
卡住

mysql> delete from t;

卡住

 update t set name ='a';

卡住

结论:通常是session1因为某个进程锁了T,在没有释放锁时,想要访问另外一个T1,就会报错ERROR 1100(HY000):表't1'没有锁定与LOCK TABLES

在mysql中,如果某个会话使用lock table tname read |写锁定某个表,

那么同一个会话中只能对锁定的表进行查询操作,不能对锁定的表进行更新插入删除,对不允许没有锁定的表进行查询更新插入删除,

其他会话对锁定的表只能查询,不能进行更新,插入,删除操作

其他会议对没有锁定的表仍然可以进行选择,更新,插入,删除操作





你可能感兴趣的:(MYSQL错误及解决方案)