drogonframework / drogon

Drogon: A C++14/17/20 based HTTP web application framework running on Linux/macOS/Unix/Windows
MIT License
11.65k stars 1.12k forks source link

用dbclient去执行绑定无符号整数会出现错误 #2203

Closed lizhizhuanshu closed 2 weeks ago

lizhizhuanshu commented 3 weeks ago

错误其实很简单,也非常容易复现,就是用DbClient->execSql 模板绑定无符号整数,插入时会变成有符号的整数,我用的是mysql的client实现,其他的并没有看,我发现,咱们这个实现压根就没有无符号,在插入的时候无符号也会给转化成有符号去转化为字符串,这个我觉得是非常严重的错误。

目前我可以提供mysql的实现部分,其他部分没有看,暂时也无法提供

an-tao commented 3 weeks ago

这个bug我记得改过啊。。。

lizhizhuanshu commented 3 weeks ago

这个bug我记得改过啊。。。

嗯,我用的master分支还是有这个问题,我看代码也的确没有区分有符号还是无符号, 我用的是mysql数据库

nqf commented 3 weeks ago

formats_.push_back(getMysqlTypeBySize(sizeof(T))); 有符号 和无符号 sizeof 结果是一样的, 然后后边都按照有符号处理的,我觉得这里应该区分有符号 还是无符号

lizhizhuanshu commented 3 weeks ago

formats_.push_back(getMysqlTypeBySize(sizeof(T))); 有符号 和无符号 sizeof 结果是一样的, 然后后边都按照有符号处理的,我觉得这里应该区分有符号 还是无符号

对,是这里,我这边也是因为项目里面发现有问题,才知道的,,这个后续如果自增id达到有符号的最大值变成负数,可能会有大问题

lizhizhuanshu commented 3 weeks ago

这个bug我记得改过啊。。。

那咱们这边准备如何处理这个问题呢,是要查看一下之前是否有其他实现,然后被覆盖了吗?

nqf commented 3 weeks ago

我觉得改一下 FieldType 这个枚举, 带上类型 就行了

nqf commented 2 weeks ago

咋关了