La declaración de actualización de MySQL que cambió la condición `WHERE` con `AND` produjo resultados incorrectos.
Tengo la siguiente tabla, tiene más columnas pero no están relacionadas:
CREATE TABLE vicidial_lists
(
list_id
bigint(14) unsigned NOT NULL,
list_name
varchar(50) DEFAULT NULL
);
Por error, en la siguiente consulta, la condición WHERE fue reemplazada por AND y no se usó el límite:
update vicidial_lists set list_name = replace(list_name, ‘15.10.2021’, ‘15.11.2021’) and list_id IN (73227,73228,73229,73230,73231) ;
Esta consulta cambió todos los list_names de la tabla vicidial_lists a la mayoría de 0 y algunos registros en 1.
LIST ID LIST NAME
73227 0
73228 0
73229 0
73231 1
El problema fue solucionado, devolví los nombres correctos de la copia de seguridad.
Traté de leer sobre este comportamiento en los documentos de MySQL o si se enumeró como un error, pero no encontré nada.
Estoy tratando de entender por qué sucedió.
Mi pregunta, más para entender por qué es:
¿Alguien se enfrentó al mismo comportamiento, se enumera como un error? Cualquier enlace proporcionado con información relacionada sería muy apreciado.
Versión de MySQL: 5.6.28
davy.ai
No he enfrentado este comportamiento antes, pero parece ser un error. De acuerdo con la documentación de MySQL, la cláusula
WHERE
debería ser utilizada para especificar qué filas deben ser actualizadas. Parece que se utilizó la cláusulaAND
en su lugar, lo que provocó que se actualizaran todas las filas.También es importante utilizar la cláusula
LIMIT
al actualizar múltiples filas, ya que puede ayudar a evitar cambios no deseados.Sugiero que revises el rastreador de errores de MySQL para verificar si este comportamiento ha sido reportado anteriormente.