2017-08-03 11 views
0

になり、私は一意のキーに無視して正常に動作し、次のクエリを持っている:がDATE_SUB()結果無効

insert_post = ("""INSERT IGNORE INTO posts 
       SET internal = %s, 
        schedule_date = DATE_SUB(%s, INTERVAL 2 HOUR) 
       """) 

できるだけ早く私はREPLACEON DUPLICATE KEY UPDATEにクエリを切り替えるように私は次のエラーを取得します

mysql.connector.errors.DataError: 1292 (22007): Truncated incorrect datetime value: '2017-08-19T12:45:00-0500' 

入力値の形式はMySQLのdatetime列と互換性がありませんが、私の最初のINSERTでは問題ではないようです。

何が欠けているのですか?

ここではSQLのフィドルはだが、パネルはDDL/DMLを実行しませんので、スキーマよりもはるかに多くを期待しないでください:http://sqlfiddle.com/#!9/656a3/2

編集:http://sqlfiddle.com/#!9/c13f45/1

:ここでは、複製エラーを示す作業SQLfiddleです
+0

挿入前にselect文としてクエリを実行しようとしましたか?私はこれを行うときに私はデバッグし、時には何かが失敗する理由を識別するのに役立ちます。 – ttallierchio

+0

@ttallierchio DATE_SUB書式設定のSELECTは正常に動作します。 – Jared

+0

DMLを左側に書いてください:http://sqlfiddle.com/#!9/c13f45/1またはrexester:http://rextester.com/TENRB4721 –

答えて

0

だから、いくらか再生した後で置き換えて挿入するとignoreの動作が異なります。インサートはデータを切り捨てますが、挿入します。交換はまったく失敗するでしょう。

この@ehtには適切な日付形式を使用する必要があります。

もう少し情報を与えると、insert ignoreは、切り捨てられているデータに関する警告をスローします。置き換えによってエラーがスローされ、実行が停止します。

+1

" IGNORE修飾子を使用すると、INSERT文の実行中に発生するエラーは無視されます[...] IGNOREでは行は破棄され、エラーは発生しません無視されたエラーは、 [INSERT構文](https://dev.mysql.com/doc/refman/5.5/en/insert.html) –

+0

興味深いことに、同じ結果に対して 'REPLACE IGNORE'を呼び出すことはできません。 – Jared

+0

ポールは正しいですが、問題があるとあなたに伝えます。ドキュメンテーションをチェックした後には、置き換え無視されません。また、私のSQLの最新バージョンで試してみました。 – ttallierchio

0

'INSERT IGNORE'はスローされた警告を無視して、正しくフォーマットされたdatetimeで挿入を完了できました。

REPLACEは、不正な形式のタイムスタンプを無視することができませんでしたとエラーになります:

mysql.connector.errors.DataError: 1292 (22007): Truncated incorrect datetime value: '2017-08-19T12:45:00-0500' 

ソリューションはFROM_UNIXTIME()解析の着信タイムスタンプをラップし、このようにタイムスタンプを再編成 を関与:

schedule_date = datetime.datetime.strptime(item['scheduleDate'], "%Y-%m-%dT%H:%M:%S-%f") # 2017-06-27T08:30:00-0500 -> # 2017-06-27T08:30:00.050000 
formatted_schedule_date = schedule_date.strftime('%Y-%m-%d %H:%M:%S') 

作業中のREPLACEクエリは次のとおりです。

INSERT IGNORE INTO posts 
       SET internal = 1, 
        schedule_date = DATE_SUB(%s, INTERVAL 2 HOUR) 
+0

http://rextester.com/GWMW94371 –

+0

@PaulSpiegel質問の実行と予想されるデータが挿入された状態で私の答えが更新されました。 – Jared

関連する問題