La bretelle de sortie de mysql dangereux avertissement

Je suis en log d'erreur d'écriture d'avertissement/d'erreurs dans un fichier. Quand je procède à INSÉRER IGNORER..instruction SELECT, il vient de se garder d'écrire ce message d'avertissement.

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.

Je veux arrêter de mysql logwriter continuer à écrire l'erreur ci-dessus. (Je ne vois pas d'autres journaux parce qu'ils fillout l'ensemble du fichier de log...)

Tout d'abord, j'ai insert (a, b, c) dans un tableau. c doit être unique dans le tableau, et a, b sont utilisés pour sélectionner. La requête sera comme ceci

SELECT c FROM table WHERE a=value1 AND value2<b AND b<value3

Et ma requête d'insertion est

INSERT IGNORE INTO table VALUES (,,),(,,)...(,,)

Je pensais que je pouvais modifier la requête de ne pas produire d'avertissement, mais mes données contiennent champ unique et j'ai besoin de garantir que le champ est unique dans la table. Et 500~2000 lignes doivent être insérées dans toutes les quelques secondes, j'ai donc besoin de faire bulk insert.

Si il y a déjà des dizaines de millions de lignes insérées, et j'ai besoin d'insérer un autre 2000 lignes en quelques secondes. Comment puis-je les insérer en toute sécurité dans la table sans remplir le fichier de log avec les mises en garde?

(Je ne peux pas éteindre le log binaire parce que j'ai besoin d'utiliser la réplication mysql.)

Êtes-vous en reproduisant les tableaux - parce que si vous faites cette erreur est importante.
Oui, je suis en utilisant la réplication mysql pour la sauvegarde, l'évolutivité des raisons
Donc, avez-vous lu le message d'erreur alors?

OriginalL'auteur user1640242 | 2012-09-05