我正在运行一个存储过程,它涉及放置在联接中的更多表。我的存储过程读取INNODB表上的操作,写入以这种方式创建的临时表。
CREATE TEMPORARY TABLE IF NOT EXISTS tmpDate
(
dates TIMESTAMP,
values INT,
ids INT
);最后,对表(INNODB)的一个列(INNODB)进行更新操作,其中肯定是,没有冲突的操作,因为我只对它执行插入操作(选择和更新仅在该StoredProcedure中)。
每次运行它时,都会收到以下错误消息:
超过锁定等待超时;尝试重新启动事务
我立即认为是由于对一个独占锁的搁置。您知道如何不为存储过程执行锁表或允许我执行SP吗?
发布于 2012-03-21 15:09:44
这个错误:"Lock wait timeout exceeded; try restarting transaction" --这是MySQL数据库的问题。我重新启动了它,我的存储过程运行良好。我还没有找到完整存储程序的锁表.
发布于 2012-03-21 15:23:04
不应使用InnoDB创建临时表。关于这件事有一份过去的错误报告。
DROP TABLE IF EXISTS tmpDate;
CREATE TEMPORARY TABLE tmpDate
(
date s TIMESTAMP,
values INT,
ids INT
) ENGINE=MyISAM; Tmp表最好用作自MyISAM以来的全表锁是强制的,但本质上是不阻塞的。。
https://stackoverflow.com/questions/9767081
复制相似问题