在navicat上远程连接MySQL,运行存储过程时传入了一个时间参数‘0000-00-00 00:00:00’,发生如下错误
1292 - Incorrect datetime value: '0000-00-00 00:00:00' for column 'targetTime' at row 1
官方文档上说明MySQL允许将’0000-00-00’保存为“伪日期”,但是MySQL有一个NO_ZERO_DATE SQL模式,这个模式默认是打开的,不允许产生伪日期,所以要关掉这个选项。执行SQL语句:
set global
sql_mode='STRICT_TRANS_TABLES,STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER'
使用show variables like '%sql_mode%'查看关于sql_mode的变量,如果没有NO_ZERO_IN_DATE和NO_ZERO_DATE就说明修改成功!
更新数据表的时候,Mysql报错:
Err] 1292 - Truncated incorrect DOUBLE value: 'XXX'
update user set nickname2 = "2"+name where nickname!=""
解决方法:
SQL语句在拼接字符串时使用函数CONCAT()而不要用“+”
正确语法:
update user set nickname2 = CONCAT(2,nickname) where LENGTH(user_nick)<10
删除表数据
TRUNCATE TABLE
delete from table where
在使用pymysql时,执行完成后,看到有warning错误信息:
Warning: (1292, "Truncated incorrect DOUBLE value: 'policeman1'")
执行的sql语句:delete from police_user where account_number=500514
后来查看表的字段属性,发现account_number是varchar类型,而sql中的类型是int类型,导致报错
修改sql语句后问题解决:delete from police_user where account_number="500514"
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)