mysql error1205 博客_mysql error:1205 - Lock wait timeout exceeded

程序报错:

1205 - Lock wait timeout exceeded; try restarting transaction

以下是相关信息:

一、

http://topic.csdn.net/u/20090304/11/9262d730-5a03-460f-a896-ae29e2a25334.html

a)

在管理节点的[ndbd default]

区加:

TransactionDeadLockDetectionTimeOut=10000(10秒)默认是1200(1.2秒)

b)

按照顺序重新启动各个节点就不会出现问题了。

1. 减小你的事务

2. 用LS的办法,加大事务DEADLOCK的时间。

c)

我也遇到这种问题了,不过我发现是另一个问题导致这种情况的出现。

两个实体表之间的联系表使用了外键,而这个外键在建表的时候没建好。我是用pd直接生成的表,因为用得不太熟,所以外键没建好。就会出现这种情况。

如果你是遇到这种情况的话,可以先将联系表和实体表的外键检查(删除后重新建立)一下,确认正确之后,再看看会不会出现这种问题。

二、

http://bugs.mysql.com/bug.php?id=10641

三、http://www.phpx.com/happy/thr91093.html

四、

http://bugs.mysql.com/bug.php?id=10641

五、

http://gladness.itpub.net/post/6254/62883

MySQL INNODB锁机制简单试验

数据库 — 作者 gladness @ 21:01

使用mysql连接mysql数据库,建两个会话(连接)。每个会话中都分别

set autocommit=0;

关闭自动提交。使用INNODB表做一下试验。

会话一:

mysql> desc test;

+-------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| a | int(11) | NO | PRI | | |

| b | varchar(10) | YES | | NULL | |

+-------+-------------+------+-----+---------+-------+

2 rows in set (0.00 sec)

mysql> set autocommit=0;

Query OK, 0 rows affected (0.00 sec)

mysql> insert into test values(1,'abcde');

Query OK, 1 row affected (0.00 sec)

会话二:

mysql> set autocommit=0;

Query OK, 0 rows affected (0.00 sec)

mysql> select * from test;

Empty set (0.00 sec)

mysql> delete from test where a=1;

这里被锁住了(会话一中commit;或者rollback;,会话二才会有响应)

过了一会儿,报错:

ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

上述情况下,ORACLE中不会被锁住。

下面是更加需要注意的:

会话一:

mysql> commit;

Query OK, 0 rows affected (0.00 sec)

mysql> select * from test;

+---+-------+

| a | b |

+---+-------+

| 1 | abcde |

+---+-------+

1 row in set (0.00 sec)

mysql> insert into test values(1,'abcde');

ERROR 1062 (23000): Duplicate entry '1' for key 1

会话二:

mysql> delete from test where a=1;

还是被锁住,过一会儿,则

ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

我在两个会话中执行了SET TRANSACTION ISOLATION LEVEL READ COMMITTED ;

结果仍然相同。

再做新的试验:

会话一:

mysql> create table testfk(a int, constraint fk_testfk foreign key(a) references test(a)) engine=innodb;

Query OK, 0 rows affected (0.00 sec)

mysql> insert into testfk values(1);

Query OK, 1 row affected (0.00 sec)

mysql> select * from test;

+---+-------+

| a | b |

+---+-------+

| 1 | abcde |

+---+-------+

1 row in set (0.00 sec)

mysql> select * from testfk;

+------+

| a |

+------+

| 1 |


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部