问题的由来
项目开发中需要对MySQL数据库中某张保存token信息的表进行失效操作,按照设计token的有效时长为1个小时。开发中我设置的的定时器任务每十分钟执行一次,具体执行的任务为除了更新表中某个标识是否有效的字段外,还对token这个列执行失效操作,即是执行更新语句时,让某条数据的某一列在原来的基础上做相应的更新,并且使用加号来进行连接,sql语句为:update ai_interface_token a set a.status = 0,a.access_token = a.access_token+'key',a.invalid_time = ? where a.access_token in (?); SQL语句写好后使用测试数据一执行,马上报错,错误信息为:Truncated incorrect DOUBLE value;
问题分析
不懂这个错误是什么意思,马上使用百度翻译,翻译为中文为:截断错误的双精度值.还是不懂,可能有些东西直译过来不好理解,然后去百度,找到一篇好的文章,解决了这个问题。导致这个问题的原因是执行更新操作时,更新某条数据的某一列时,让这一列在原来的基础上进行更新操作,比如某一列原来保存的值为abc,现在想更新为abckey,不能使用加号连接符,需要使用concat连接符才可以。
解决方案
根据作者的提供的解决方案,马上修改sql语句为:update ai_interface_token a set a.status = 0,a.access_token = concat(a.access_token,'key'),a.invalid_time = ? where a.access_token in (?);问题圆满解决!现在贴上那篇文章的地址