La instrucción que está ejecutando no es segura en principio porque estás usando INSERT ... SELECT
en una tabla con una columna de incremento automático. Si una consulta de esa forma general se utilizaron en una STATEMENT
-entorno basado, y el SELECT
no devolvió las filas en el mismo orden en el maestro y el esclavo, las filas podrían seleccionarse en un orden diferente y, por lo tanto, terminar con diferentes valores de incremento automático.
En la práctica, el específico la consulta que está ejecutando es determinista porque solo está insertando una fila y está especificando explícitamente el valor de incremento automático. Sospecho que esa es la causa de tu confusión. Sin embargo, parece que sigue activando la advertencia porque está haciendo INSERT ... SELECT
en una tabla con un incremento automático, y el servidor parece estar aplicando la determinación generalizada "insegura" a la consulta como una cuestión de principio, en lugar de precisión.
Cambiando su binlog_format
a MIXED
debería hacer que la advertencia desaparezca, ya que el servidor puede cambiar de modo a su discreción... y es muy poco probable que tenga efectos secundarios negativos. Si no fuera por el hecho de que STATEMENT
siempre ha sido el predeterminado (ya que inicialmente ese era el único tipo de replicación disponible), sospecho que habrían hecho MIXED
el valor predeterminado hace mucho tiempo... de hecho, si se familiariza con el funcionamiento interno de los registros binarios, probablemente se inclinará por hacer lo que yo hago y usar ROW
en casi todo... tiende a ser un registro binario mucho más útil para solucionar problemas y evitar problemas, porque los datos de la fila "antigua" se registran en DELETE
y UPDATE
.