我在unique key上使用了以下查询:
insert_post = ("""INSERT IGNORE INTO posts
SET internal = %s,
schedule_date = DATE_SUB(%s, INTERVAL 2 HOUR)
""")
当我将查询切换到REPLACE
或ON DUPLICATE KEY UPDATE
时,就会出现以下错误:
mysql.connector.errors.DataError: 1292 (22007): Truncated incorrect datetime value: '2017-08-19T12:45:00-0500'
我知道传入值格式与MySQL datetime列不兼容,但在我的初始INSERT
中似乎没有问题。你知道吗
你知道我遗漏了什么吗?你知道吗
这里有一个SQL fiddle,但是面板不会运行DDL/DML,所以不要期望更多的模式:http://sqlfiddle.com/#!9/656a3/2
Edit:这里是工作的SQLfiddle,显示复制的错误:http://sqlfiddle.com/#!9/c13f45/1
所以在玩了一番之后,替换和插入忽略的行为就不同了。insert将截断数据,但仍然insert。替代品将彻底失效。你知道吗
您必须为这个@eht使用正确的日期时间格式。你知道吗
为了提供更多的信息,insert ignore抛出了一个关于数据被截断的警告。replace抛出错误并停止执行。你知道吗
“INSERT IGNORE”能够忽略抛出的警告,并使用格式正确的
datetime
完成插入。你知道吗REPLACE
无法忽略格式错误的时间戳,并将导致错误:解决方案包括
用解析并重新组织时间戳,如下所示:FROM_UNIXTIME()
包装传入的时间戳工作
REPLACE
查询如下所示:相关问题 更多 >
编程相关推荐