ファイルに警告/エラーを書き込むためにlog-errorを使用しています。 INSERT IGNORE..SELECT文を実行すると、この警告メッセージを書き続けるだけです。ターンオフmysql安全でないステートメントの警告
120905 3:01:23 [Warning] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. INSERT IGNORE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are ignored. This order cannot be predicted and may differ on master and the slave.
私は、上記のエラーを繰り返し書き続けることをmysqlログライターが止めたいと思っています。 (私はログファイル全体を埋めるので、他のログは見えません...)
まず、(a、b、c)をテーブルに挿入します。 cは表内で一意でなければならず、a、bは選択に使用されます。クエリは、この
SELECT c FROM table WHERE a=value1 AND value2<b AND b<value3
のようになりますそして、私のINSERTクエリは
INSERT IGNORE INTO table VALUES (,,),(,,)...(,,)
私は警告を生成しないようにクエリを変更することができると思ったが、私のデータは一意のフィールドが含まれていると私が提出していることを保証する必要がありますテーブル内でユニークです。 500〜2000行は数秒ごとに挿入する必要があるので、一括挿入する必要があります。
すでに数十万行が挿入されていて、数秒で別の2000行を挿入する必要がある場合。ログファイルに警告を書き込まずにテーブルに安全に挿入するにはどうすればよいですか?
(私はMySQLのレプリケーションを使用する必要があるので、私はバイナリログをオフにすることはできません。)
テーブルを複製していますか?このエラーが発生した場合は重要です。 –
はい、私はバックアップのために、スケーラビリティの理由のためにmysqlレプリケーションを使用しています – user1640242
それでは、あなたはエラーメッセージを読んだことがありますか? – zerkms