Mysql Event执行失败 Lock wait timeout exceeded; try restarting transaction

topbasemaster 2014-09-01 06:20:17
Lock wait timeout exceeded; try restarting transaction

现在有一个 事件就是 将一个逻辑有点复杂的视图 的数据 备份到 一个物理表当中

INSERT INTO `REGISTER_INFO_HIS` (`id`, `name`.......)
SELECT `id`, `name`....... FROM VIEW_TABLE;

直接执行这个SQL 语句需要 15秒的时间


我现在做了一个 存储过程:
DELIMITER $$

USE `mydbname`$$

DROP PROCEDURE IF EXISTS `ORDER_DETAIL_HIS`$$

CREATE DEFINER=`mydbname`@`%` PROCEDURE `ORDER_DETAIL_HIS`()
BEGIN
TRUNCATE TABLE REGISTER_INFO_HIS;
INSERT INTO `REGISTER_INFO_HIS` (`id`, `name`.......)
SELECT `id`, `name`....... FROM VIEW_TABLE;

END$$

DELIMITER ;


==================

事件:
CREATE EVENT `EVENT_UPDATE_REGISTER_ORDER_DETAIL_HIS` ON SCHEDULE EVERY 1 DAY STARTS '2014-08-23 03:10:00'

ON COMPLETION NOT PRESERVE ENABLE

DO CALL ORDER_DETAIL_HIS();

=======================

报错是: [ERROR] Event Scheduler:
Lock wait timeout exceeded; try restarting transaction

TRUNCATE TABLE REGISTER_INFO_HIS; 是执行了, 但数据表没有数据
求各位大哥帮忙喔




...全文
335 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
BI-DA-刘恒 2014-09-02
  • 打赏
  • 举报
回复
这个你可以测试一下,truncate之后,不要insert,只select跑一下存储过程,如果没问题,那就是insert的时候表REGISTER_INFO_HIS锁了,如果仍然报错,那就是从view_table拿数据的时候出问题了。 我用你的说法测试了下,在我这里没问题的。
topbasemaster 2014-09-02
  • 打赏
  • 举报
回复
引用 3 楼 ACMAIN_CHM 的回复:
当时是不是还有其它进行或者计划任务在运行导致表被锁?
没有其他 就一个计划任务而已
ACMAIN_CHM 2014-09-02
  • 打赏
  • 举报
回复
当时是不是还有其它进行或者计划任务在运行导致表被锁?
topbasemaster 2014-09-02
  • 打赏
  • 举报
回复
select * from view_table 这里为何有问题呢? 我手工执行 存储过程 或者 那条insert 语句没事的喔
BI-DA-刘恒 2014-09-01
  • 打赏
  • 举报
回复
存储过程应该没有错,Lock wait time out,应该是你select * from view_table出问题了。

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧