【问题标题】:Simple mysql event not running简单的mysql事件没有运行
【发布时间】:2014-10-19 10:21:04
【问题描述】:

我的 mysql 数据库中有一个名为“updategold”的事件,它应该做的是每秒将表值增加 5。但是,它不起作用。没有错误消息,一切看起来都很好,但它只是没有运行。以下是它的设置方式:

  • 活动名称:Updategold
  • 统计:启用
  • 事件类型:周期性
  • 每隔一秒执行一次
  • 开始:我将其设置为未来几分钟
  • 结束:空
  • 定义(应该每秒运行一次):

    update stats.gold set stats.gold = stats.gold + 5
    where stats.id = users.id
    
  • 定义:root@localhost

有什么想法吗?

编辑

整个过程

DROP EVENT `updategold`; CREATE DEFINER=`root`@`localhost` EVENT `updategold` ON SCHEDULE EVERY 1    SECOND STARTS '2014-10-19 11:37:00.000000' ON COMPLETION NOT PRESERVE ENABLE DO update stats set stats.gold = stats.gold + 5 where stats.id = users.id

【问题讨论】:

  • 拥有实际代码会有所帮助。
  • @maythesource.com 不记得我在控制台中输入了什么,将模拟它并重试

标签: php mysql


【解决方案1】:

你的语法在更新统计中是错误的。gold,你应该只给table_name

 update stats.gold set stats.gold = stats.gold + 5 
     where stats.id = users.id

应该是:

 UPDATE stats SET stats.gold = stats.gold + 5 
     INNER JOIN users 
         ON stats.id = users.id

并添加了JOIN 以从用户表中选择要更新的用户。

【讨论】:

  • 我实际上注意到不久之后大声笑仍然没有通过编辑工作 - 我需要哪里
  • 自从您检查 users.id 以来已经更新了问题,您要么必须加入两个表或选择用户,要么更新统计信息中的所有行,如果我猜你的意图这听起来很合理正确
  • 是的,因为我猜你只需要拥有statsusers。在没有where 和没有join 的情况下尝试它,以确保它工作正常,然后完成其余的逻辑。
  • 真棒!谢谢 :) 想把内连接部分放在你的答案中,因为这是修复它的原因
【解决方案2】:

也许这是你的语法。你这样做过吗?

UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;

【讨论】:

  • 我想增加值,在这种情况下我想增加column1中的值,而不仅仅是设置
猜你喜欢
  • 2014-08-31
  • 2014-12-02
  • 2015-05-05
  • 1970-01-01
  • 2015-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多