Cita: oloca los datos en los campos equivocados
MySQL no coloca los datos en los campos equivocados. Éstás poniendo los datos en el orden incorrecto del VALUE.
Cuando no indicas qué campos se insertarán, debes respetar el orden físico de las columnas de la tabla.
Código SQL:
Ver originalCREATE TABLE TABLA1(
a INT,
b VARCHAR,
c DATE);
Correcto:
Código SQL:
Ver originalINSERT INTO tabla1(b, c, a)
VALUES('texto', '2014-03-21', 12);
Código SQL:
Ver originalINSERT INTO tabla1
VALUES(12, 'texto', '2014-03-21');
Incorrecto:
Código SQL:
Ver originalINSERT INTO tabla1
VALUES('texto', '2014-03-21', 12);
MySQL no analiza los datos semánticamente, ni tampoco puede adivinar que los estás mandando mal.
Y si además tratas todas las cosas como cadenas de texto, es altamente probable que no se disparen errores de sintaxis cuando los datos están en la posición incorrecta.
Esto significa que si vas a insertar datos en un campo numérico
no lo pongas entre apóstrofos, y si es de fecha, mételo en una función de conversión, para que la funcion dispare un error cuando encuentre algo que no debe estar allí.
Por ejemplo:
Código SQL:
Ver originalINSERT INTO tabla1(b, c, a)
VALUES('texto', DATE('2014-03-21'), 12);