set @runtime='2008-03-08 18:20:22'
CREATE EVENT update_contest_status
ON SCHEDULE AT TIMESTAMP @runtime
DO update dbs.aaa set timeline=0 where id=1;SHOW PROCESSLIST;将ON SCHEDULE AT TIMESTAMP @runtime
换成ON SCHEDULE AT TIMESTAMP '2008-03-08 18:20:22'
就没有错了,但因为@runtime是一个可变量,必须单拉过来。不知道以上语法错在哪里

解决方案 »

  1.   

    MYSQL 的 CREATE EVENT 不去这个用变量。
    另外你的这个需求似乎不应该用EVENT,而是应该直接用SQL语句SELECT实现。
      

  2.   

    主要想实现功能是;
    创建一个比赛。定义比赛时间。没有达到比赛时间时比赛的属性字段值为‘waitting’
    当到比赛时间时将字段值改为‘running’
    我创建了一个调度器
    set @runtime=0 
    select contest.startTime into @runtime from contest where contest.status='waitting' and id=14
    CREATE EVENT update_contest_status
    ON SCHEDULE AT TIMESTAMP @runtime
    DO update contest set contest.status='Running';
    SHOW PROCESSLIST;报语法错误 不知道以上语法错在哪里
      

  3.   

    ON SCHEDULE AT TIMESTAMP 后需要是常数,不是变量。
    如果一定要这么做,你可以用PREPARE,EXECUTE来实现。
      

  4.   

    set @runtime='2008-03-08 18:20:22'
    PREPARE stmt1 FROM 'CREATE EVENT update_contest_status ON SCHEDULE AT TIMESTAMP ? DO update aaa set timeline=0 where id=1;'
    EXECUTE stmt1 USING @runtime; 
    还是有执行错误啊
      

  5.   

    set @runtime='2008-03-08 18:20:22'set @sql = concat('CREATE EVENT update_contest_status ON SCHEDULE AT TIMESTAMP "',@runtime,'" DO update aaa set timeline=0 where id=1;');PREPARE stmt1 FROM @sql;
    EXECUTE stmt1