【问题标题】:Creating event to delete records in the table创建事件以删除表中的记录
【发布时间】:2015-05-06 12:51:22
【问题描述】:

我正在尝试让我的 mysql 事件正常工作,但我面临的问题是在没有 autoDelete 事件的情况下创建总线表并且我没有收到任何错误。我通过在 sql 浏览器中执行此语句 show events 在 phpmyadmin 中检查了我的表,我得到了结果 empty results,因为我说总线表在那里?!

我在phpmyadmin sql浏览器中检查了EVENT语法代码,它有效吗?

DatabaseMetaData dbm = con.getMetaData();
        ResultSet tables = dbm.getTables(null, null, "bus", null);
        if (tables.next()) {
            // here if the table exist just update data. I have the most of my code her.
            return status;
        } else {
            // Create bus table
            stt.execute("CREATE TABLE IF NOT EXISTS bus"
                    + "(id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,"
                    + "mac VARCHAR(30) NOT NULL UNIQUE,"
                    + "route int(11) NOT NULL,"
                    + "latitude FLOAT(10,6) NOT NULL,"
                    + "longitude FLOAT(10,6) NOT NULL,"
                    + "created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)");

        stt.execute("CREATE EVENT AutoDelete"
                    + "ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 3 MINUTE "
                    + "DO "
                    + "DELETE FROM bus WHERE created_at < (NOW() - INTERVAL 3 MINUTE)");
            insert_update_data(mac, route, latD, longD, con);
            return status;

        }

【问题讨论】:

  • 您到底想做什么?您现在正在做的是仅在总线表不存在时才创建它 下一条语句只是删除 3 分钟前之前已创建的所有记录,对吗?第二条语句将在您执行此 else 语句之外的任何操作后 3 分钟内执行
  • @Jeremy:是的,删除所有3分钟之前没有更新的记录,为什么没有用bus表创建事件?

标签: java mysql sql jdbc


【解决方案1】:

尝试在事件名称后加空格

"CREATE EVENT AutoDelete "

我认为您的代码当前正在创建一个看起来像这样的字符串:

CREATE EVENT AutoDeleteON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 3 MINUTE DO DELETE FROM bus WHERE created_at &lt; (NOW() - INTERVAL 3 MINUTE)

虽然我很惊讶这没有引发 SQLException

【讨论】:

  • 是的,该事件正在创建中,实际上我之前没有遇到任何错误。我的活动不会删除 3 分钟前未更新的记录?你知道发生了什么吗?
  • 事件在 mySQL 上不起作用,除非 EventScheduler 已经启动。你确定它正在运行吗?
  • 不,我没有创建它。我该如何启动它?我在哪里可以设置这条线SET GLOBAL event_scheduler = ON;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-14
  • 1970-01-01
  • 1970-01-01
  • 2015-12-08
  • 1970-01-01
相关资源
最近更新 更多