emqx4.3 UPDATE语句出错

环境信息

  • EMQ X 版本:4.3.2
  • 操作系统及版本:docker部署
  • 其他

问题描述

emqx4.3 UPDATE不能通过校验 ,之前在4.2.5版本中能够通过校验的语句UPDATE iot_device set offline_at=CURRENT_TIMESTAMP,state=0 where card_id like ${card_id};
在4.3.2中报错。

配置文件及日志

Bad Arguments: {init_action,[{{init_action_failure,‘mqtt_emqx@172.18.0.11’},{{emqx_backend_mysql_actions,on_action_create_data_to_mysql},{error,{badmatch,{error,not_insert_sql}},[{emqx_backend_mysql_actions,on_action_create_data_to_mysql,2,[{file,“emqx_backend_mysql_actions.erl”},{line,395}]},{emqx_rule_engine,’-init_action/4-fun-0-’,4,[{file,“emqx_rule_engine.erl”},{line,535}]},{emqx_rule_engine,init_action,4,[{file,“emqx_rule_engine.erl”},{line,535}]},{erpc,execute_call,4,[{file,“erpc.erl”},{line,416}]}]}}}]}

请提供详细的动作相关参数

SELECT
 clientid,concat(clientid,'%') as card_id,disconnected_at
FROM
 "$events/client_disconnected"
 WHERE strlen(clientid)=12

动作

UPDATE iot_device set offline_at=CURRENT_TIMESTAMP,state=0  where card_id like ${card_id};

添加动作的时候,填写的参数?有SQL语句,还有别的比如是否批量等

都用的默认参数,4.2没有同步和异步,4。3用了默认的,创建动作的时候就报错

4.3默认是异步,所以如果你使用update,请配置成同步写入

还是不行,仍然报错。


Bad Arguments: {init_action,[{{init_action_failure,‘mqtt_emqx@172.18.0.11’},{{emqx_backend_mysql_actions,on_action_create_data_to_mysql},{error,{badmatch,{error,not_insert_sql}},[{emqx_backend_mysql_actions,on_action_create_data_to_mysql,2,[{file,“emqx_backend_mysql_actions.erl”},{line,395}]},{emqx_rule_engine,’-init_action/4-fun-0-’,4,[{file,“emqx_rule_engine.erl”},{line,535}]},{emqx_rule_engine,init_action,4,[{file,“emqx_rule_engine.erl”},{line,535}]},{erpc,execute_call,4,[{file,“erpc.erl”},{line,416}]}]}}}]}

你需要关闭批量呢

update 不支持批量和异步呢

关闭批量,成功,谢谢。这方面的说明哪里有?

抱歉,暂时还没说明,目前只有insert支持批量,其他模式都不支持批量