我有以下查询工作正常,忽略唯一键:
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 日期时间列不兼容,但这在我的初始 INSERT
中似乎不是问题。
对我缺少的东西有什么想法吗?
这是一个 SQL fiddle ,但面板不会运行 DDL/DML,因此不要期望比模式更多的内容:http://sqlfiddle.com/#!9/656a3/2
编辑:这是显示复制错误的工作 SQLfiddle:http://sqlfiddle.com/#!9/c13f45/1
最佳答案
所以经过一番尝试后,替换和插入忽略的行为似乎有所不同。插入将截断数据但仍然插入。替换将彻底失败。
您必须为此@eht 使用正确的日期时间格式。
为了提供更多信息,插入忽略会抛出有关数据被截断的警告。替换会引发错误并停止执行。
关于python - 将 INSERT 切换为 REPLACE 会使 DATE_SUB() 结果无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45493255/