问题描述:
1、MYSQL的计划事件默认是关闭的,我已经开启;
2、存储过程无参数,名为proc_create_table_daily,按日期来创建表,已确保正确,单独执行的时候表是创建了;
3、事件创建SQL代码如下:
/*每天的零点创建日表*/
DELIMITER $$
DROP EVENT IF EXISTS event_create_table_daily;
CREATE EVENT event_create_table_daily
ON SCHEDULE EVERY 1 DAY
STARTS '2011-07-01 00:00:00'
ENABLE
DO
BEGIN
CALL proc_create_table_daily();
END
$$
DELIMITER ;
现问题是:proc_create_daily没有执行创建表!!
请指点,谢谢!

解决方案 »

  1.   

    有无提示,有无错误日志
    proc_create_daily代码是什么 
      

  2.   

    /*存储过程 创建日表*/
    delimiter $$ 
    DROP PROCEDURE IF EXISTS proc_create_table_daily;   
    CREATE PROCEDURE proc_create_table_daily()  
    BEGIN
    declare str_date varchar(16);
    SET str_date = date_format(now(),"%Y%m%d");SET @sqlcmd1 = concat('create table tb_data_freeze_',str_date,'(data_dt datetime,
    user_id varchar(32),dtu_addr varchar(16),meter_addr varchar(16),refrigeration float(10,2),
    heat float(10,2),heat_power float(10,2),flow_rate float(10,2),total_flow float(10,2),
    supply_temp float(10,2),back_temp float(10,2),total_time int(12),real_time datetime,back_vch varchar(64),
    PRIMARY KEY (data_dt,dtu_addr,meter_addr));');
    PREPARE p1 FROM @sqlcmd1;
    EXECUTE p1;
    DEALLOCATE PREPARE p1;SET @sqlcmd2 = concat('create table tb_data_real_',str_date,'(data_dt datetime,
    user_id varchar(32),dtu_addr varchar(16),meter_addr varchar(16),refrigeration float(10,2),
    heat float(10,2),heat_power float(10,2),flow_rate float(10,2),total_flow float(10,2),
    supply_temp float(10,2),back_temp float(10,2),total_time int(12),real_time datetime,back_vch varchar(64),
    PRIMARY KEY (data_dt,dtu_addr,meter_addr));');
    PREPARE p2 FROM @sqlcmd2;
    EXECUTE p2;
    DEALLOCATE PREPARE p2;SET @sqlcmd3 = concat('create table tb_data_alarm_',str_date,'(alarm_dt datetime,user_id varchar(32),
    dtu_addr varchar(32),meter_addr varchar(16),alarm_item varchar(16),status varchar(64),value float(10,2),
    PRIMARY KEY (alarm_dt,dtu_addr,meter_addr));');
    PREPARE p3 FROM @sqlcmd3;
    EXECUTE p3;
    DEALLOCATE PREPARE p3;END
    $$
    delimiter ;
      

  3.   

    存储过程没问题,
    show variables like 'event%' 看一下  event_scheduler 是ON 还是OFF ?
      

  4.   

    SET GLOBAL event_scheduler = 1;
    or
    SET GLOBAL event_scheduler = ON;
      

  5.   

    mysql> show variables like 'event%';
    +-----------------+-------+
    | Variable_name   | Value |
    +-----------------+-------+
    | event_scheduler | ON    |
    +-----------------+-------+
    1 row in set (0.00 sec)
      

  6.   

    已经通过更改my.ini下的[mysqld] 添加event_scheduler = 1
    并重启MYSQL了,我在想是不是和我手动改操作系统时间为0点0分0秒的原因
      

  7.   

    有可能,你将时间修改一下,比如
    STARTS '2011-07-01 10:30:00'看看事件能否运行
      

  8.   

    事件触发的时间改了,保存,MYSQL是否需要重新启动?
      

  9.   

    成功了,果然是我自己改操作系统时间为0点的原因,怎么MYSQL能判断我改了操作系统时间,难道MYSQL不是判断是否时间到了,而是用计时的方法来的?
      

  10.   

    估计是手动修改时间干扰了MYSQL对时间的判断
      

  11.   

    http://www.docin.com/p-25737805.html