Javascript Node.js+;Mysql事件调度器:如何?
我正在使用node.js构建一个产品管理平台,我的数据保存在MySQL数据库中。 此时,我需要使用MySQL的事件调度器在特定时间执行一些操作,当我在MySQL控制台中测试它时,一切都很顺利,但当通过node.js执行时,我遇到以下错误: 错误:ER_PARSE_错误:您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了解在第1行的“DELIMITER$$CREATE EVENT IF NOT EXISTS test ON SCHEDULE AT DATE_ADD(NOW(),”附近使用的正确语法 我正在使用连接到我的数据库,我正在执行以下操作Javascript Node.js+;Mysql事件调度器:如何?,javascript,mysql,node.js,Javascript,Mysql,Node.js,我正在使用node.js构建一个产品管理平台,我的数据保存在MySQL数据库中。 此时,我需要使用MySQL的事件调度器在特定时间执行一些操作,当我在MySQL控制台中测试它时,一切都很顺利,但当通过node.js执行时,我遇到以下错误: 错误:ER_PARSE_错误:您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了解在第1行的“DELIMITER$$CREATE EVENT IF NOT EXISTS test ON SCHEDULE AT DATE_ADD(NOW(),”附
var query = 'DROP EVENT IF EXISTS test;' +
' DELIMITER $$' +
' CREATE EVENT IF NOT EXISTS test' +
' ON SCHEDULE AT DATE_ADD(NOW(), INTERVAL 10 SECOND) ON COMPLETION PRESERVE ENABLE' +
' DO BEGIN' +
' SELECT @data_id:=quiz_platforms_has_quiz_data.quiz_data_id,' +
' @date_end:=quiz_platforms_has_quiz_data.timestamp_end' +
' FROM quiz_platforms_has_quiz_data' +
' WHERE quiz_platforms_has_quiz_data.quiz_platforms_id=5' +
' AND quiz_platforms_has_quiz_data.timestamp_start >= CURDATE()' +
' ORDER BY timestamp_start LIMIT 1;' +
' UPDATE quiz_platforms SET quiz_platforms.current_quiz_id=@data_id' +
' WHERE quiz_platforms.id=5;' +
' IF @date_end>0 THEN' +
' ALTER EVENT test ON SCHEDULE AT @date_end;' +
' ALTER EVENT test ENABLE;' +
' ELSE' +
' DROP EVENT test;' +
' END IF;' +
' END $$' +
' DELIMITER ; ';
orm_db.driver.execQuery(query, function(err, result) {
if (err) {
console.log(NOW + " - [DB-Event-ERR] " + err);
}
});
问题是:我已经知道这个库和节点mysql本身都不支持这一点,我想知道是否有办法
我还考虑过使用cron管理器,并从服务器上执行此操作,而不是使用数据库的事件调度,但我不知道什么是最轻的解决方案
[编辑]
我需要通过node.js使用事件调度器,但我还没有成功完成。由于公司政策的原因,我无法透露太多细节。假设我们的设备在某个时间间隔内运行某个任务。我必须更新数据库表中的一列,以便它表示当前在该设备中运行的任务
表设备(列):id、名称、说明、当前任务
表任务(列):id、名称、说明
因此,如果我要检查设备当前的任务,我只需转到设备的表就可以知道
我必须能够在任务更改后立即更新该列的值。你看到了吗?我刚才看到了,我的同事找到了。谢谢!尽管它没有我想要的性能比较……如果你问的是关于你真正问题的问题,而不是你的问题,你可能不需要cron和/或事件调度器解决方案..我真正的问题在那里,但我将对其进行编辑以使其更清楚,如果设备在某个时间间隔运行任务,设备如何“知道”什么时候开始运行任务?它应该运行哪个任务?是否有一个接口将这些传感器/设备与MySQL中的任务连接起来?或者它是一个断开连接的系统,而您使用MySQL完全是基于设备将在特定时间运行的事实?您看到了吗?我刚才看到了,我的同事找到了。谢谢!尽管它没有性能我希望进行的性能比较…如果您询问有关实际问题的问题,而不是您尝试的解决方案,则可以避免使用cron和/或事件调度器。我真正的问题在那里,但我将对其进行编辑以使其更清楚,如果设备在某个时间间隔运行任务,设备如何“知道”什么时候开始运行任务,它应该运行哪个任务?是否有一个接口将这些传感器/设备与MySQL中的任务连接起来,或者它是一个断开连接的系统,而您使用MySQL完全是基于设备将在特定时间运行这一事实?