Estoy usando el error de registro para escribir advertencias/errores en un archivo. Cuando realizo la instrucción INSERT IGNORE..SELECT, simplemente sigue escribiendo estos mensajes de advertencia.Desactivar instrucción de advertencia insegura de 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.
Quiero dejar de mysql logwriter sigue escribiendo el error una y otra vez. (No puedo ver otro registro porque rellenan todo el archivo de registro ...)
En primer lugar, inserto (a, b, c) en una tabla. c debe ser único en la tabla, y a, b se utilizan para seleccionar. Consulta será así
SELECT c FROM table WHERE a=value1 AND value2<b AND b<value3
Y mi consulta de inserción es
INSERT IGNORE INTO table VALUES (,,),(,,)...(,,)
pensé que podría cambiar la consulta no producir advertencia, pero mis datos contienen campo único y tengo que garantizar que la presentada es único en la tabla. Y 500 ~ 2000 filas deben insertarse cada pocos segundos, así que tengo que hacer una inserción masiva.
Si ya hay una docena de millones de filas insertadas, y necesito insertar otras 2000 filas en pocos segundos. ¿Cómo puedo insertarlos de forma segura en la tabla sin llenar el archivo de registro con las advertencias?
(no puedo apagar el registro binario porque necesito utilizar la replicación de MySQL.)
¿Está replicando las tablas? Porque si lo es, este error es significativo. –
Sí, estoy usando la replicación de mysql para copia de seguridad, por razones de escalabilidad – user1640242
¿Entonces ha leído el mensaje de error? – zerkms