Archery icon indicating copy to clipboard operation
Archery copied to clipboard

archery在执行mongodb工单时,如果SQL里面有分号,执行会报错

Open czxin788 opened this issue 2 years ago • 6 comments

重现步骤

1、db.t1.insert({'name':'李四'}); 不带分号, 成功 image 2、db.t1.insert({'name':'李四;'}); 带分号,失败 image

预期外的结果

期望执行带分号的sql语句也能成功: db.t1.insert({'name':'李四;'});

日志文本

No response

版本

1.9.0

部署方式

Docker

是否还有其他可以辅助定位问题的信息?比如数据库版本等

No response

czxin788 avatar Jan 12 '23 03:01 czxin788

这个问题是已知问题,文档里也有提过,审核的正则表达式需要优化

fancy-lee avatar Feb 06 '23 02:02 fancy-lee

明白了,这个有计划优化吗 image

czxin788 avatar Feb 09 '23 02:02 czxin788

暂时没有时间调整这块,你是要是有这个强需求,可以自己看代码修改一下

fancy-lee avatar Feb 09 '23 11:02 fancy-lee

好的,谢谢。

我还有个问题,想请教一下,就是mongodb有什么方法实现备份sql吗,就像mysql那样,执行的每条sql,都有对应的回滚语句。 我知道mysql是通过goinception实现回滚sql的,而goinception是通过binlog row 来实现回滚sql的。 那么mongodb有什么办法也能实现回滚sql吗。

实现mongodb 回滚sql,是强需求,我们现在用mongodb数据库的项目也开始多起来了。

czxin788 avatar Feb 10 '23 01:02 czxin788

首先得对mongodb解决语句语法语义的解析,这块就得投入一定的时间去搞,这也是一个小难点,解决了这块才能做回滚

fancy-lee avatar Feb 10 '23 02:02 fancy-lee

了解, oracle是通过日志挖掘实现的回滚sql的; mysql是通过binlog row实现回滚sql的; 目前mongodb只有一个statement 格式的 oplog,无法用于生成回滚语句。

mongodb 确实是个难点。

czxin788 avatar Feb 10 '23 02:02 czxin788