在开发中遇到一个BUG,无法有效编辑,分析查看日志后发现,MySQL报错:Truncated incorrect DOUBLE value: ‘xxx‘
检查后发现sql语法并没有问题,怀疑是字段类型的问题
执行的sql为
UPDATE info SET STATE=1 WHERE STATE<>1
果然,检查表结构后发现state字段为varchar类型,where条件后的STATE<>1将1当做int类型使用,所以报错。正确的写法应该为
sqlStateCond := []string{"STATE
like ‘%" + state
+ "%‘"}
UPDATE info SET STATE=‘1‘ WHERE STATE<>‘1‘