线上执行sql时发现一条普通的update sql语句执行报错Truncated incorrect DOUBLE value: 'xxx'
仔细检查了一下sql语法并没有问题,怀疑是字段类型的问题
执行的sql为
UPDATE info SET STATE=1 WHERE STATE<>1
果然,检查表结构后发现state字段为varchar类型,where条件后的STATE<>1将1当做int类型使用,所以报错。正确的写法应该为
UPDATE info SET STATE='1' WHERE STATE<>'1'