Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Configurar Insert en Mysql sin validar datos

Estas en el tema de Configurar Insert en Mysql sin validar datos en el foro de Mysql en Foros del Web. Buenas Tardes a los Integrantes de este Foro: Reciban un cordial saludo, hoy quiero comentarles un inconveniente que tengo migre una base de datos de ...
  #1 (permalink)  
Antiguo 26/10/2014, 13:40
 
Fecha de Ingreso: agosto-2011
Ubicación: Bogota
Mensajes: 37
Antigüedad: 12 años, 8 meses
Puntos: 1
Configurar Insert en Mysql sin validar datos

Buenas Tardes a los Integrantes de este Foro:

Reciban un cordial saludo, hoy quiero comentarles un inconveniente que tengo migre una base de datos de mysql 5.5 a 5.7, en la versión anterior cuando realizaba un INSERT si el campo lo habia creado INT y le enviava caracteres en VARCHAR por default ponia 0, pero ahora me sale un un error 1366.

Quisiera saber si alguna forma de configurar el mysql de la ultima versión para que haga lo mismo en la version que tenia, y no me valide los datos sino que no importe que datos envie me haga el insert sobre todo en los campos INT, para no validar los datos desde PHP antes de hacer el insert ya que serían muchas validaciones que tendría que modificar.

Les agradeco su ayuda de antemano.

Atentamente;

OSWALDO GAITAN ARAQUE
Bendiciones!!
  #2 (permalink)  
Antiguo 26/10/2014, 14:47
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Configurar Insert en Mysql sin validar datos

Bueno, vamos por partes.

Por un lado, hubo algunos cambios en las configuraciones por defecto de MYSQL entre las versiones mencionadas, por lo que perfectamente podrían ser la causa de tu problema, pero con ciertas restricciones.
Para verificar, posteanos lo que resulta de estas dos consultas, que nos permitirán ver el SQL MODE de tu servidor (que es lo que nos puede orientar):
Código MySQL:
Ver original
  1. SELECT @@GLOBAL.sql_mode;
  2. SELECT @@SESSION.sql_mode;

Por otro lado, lo que mencionas que no quieres hacer:
Cita:
que no importe que datos envie me haga el insert sobre todo en los campos INT, para no validar los datos desde PHP antes de hacer el insert ya que serían muchas validaciones que tendría que modificar.
es un error de los característicos.
Si no validas nada en la aplicación, y quieres que la base haga todo el trabajo sucio, entonces estás programando mal, con pésimas prácticas de desarrollo, lamento decirlo de esta forma.
En primer lugar, estás acoplando la aplicación a la base de forma nociva, esperando que el servidor reaccione de determinada forma y cuando no lo hace tienes los problemas que mencionas.
No puedes plantear una solución basado en premisas de cumplimiento inseguro como configuraciones que no son adminsitradas por ti. Tienes que plantearlas de modo que el cambio de servidor no afecte la aplicación. Programar de otro modo es ineficiente, poco profesional y lleno de inconvenientes.
Además, no ess competencia de la base ni tienes por qué adosarle realizar tareas para las que no está optimizada, sin contar con que además, al dejar que que la base "gestione" los errores de la aplicación, lo único que hace es enviar constante información basura que se procesará eventualmente con errores.

Una de las partes mas engorrosas que se hacen en cualquier sistema que se programa son las validaciones... pero son responsabilidad de la aplicación (y del desarrollador) que esas validaciones se hagan antes de enviar las cosas a la base, y sólo consultando las necesarias en la base, pero siempre con la meta de que al enviar un INSERT final, este lleve datos correctos, y no basura.

Fuera de lo dicho, si quieres seguir programando como lo haces, es tu decisión.
Te comento que como analista funcional, yo suelo rechazar todos los desarrollos que nos llegan a la empresa donde los programadores hacen eso, y los costos de ese tiempo perdido no son nuestros. Los deben absorber los programadores como parte de sus errores.
Si no los rechazo, cuando lleguen a los de administración de BBDD, ellos los rechazan sin explicaciones, por las mismas razones.
Lo que quiero expresar con esto es que en ciertos ámbitos, ese tipo de práctica puede hacerte perder dinero y trabajos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 27/10/2014, 09:15
 
Fecha de Ingreso: agosto-2011
Ubicación: Bogota
Mensajes: 37
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Configurar Insert en Mysql sin validar datos

Buenos Días Ingeniero:

Reciba un cordial saludo, primero que todo agradecerle por su respuesta y por la aclaración acerca del manejo de las validaciones, lo que pasa es que el servidor antiguo tenia esas configuraciones planteadas y no estaba en mis manos su configuración pero ya sabiendo como es el tema voy a empezar a validar la información, pero por el momento no puedo parar el aplicativo si me colabora para dejar mientras realizó los cambios dejarlo como el servidor antiguo, se lo agradecería:

con relación a las sentencias que me envia estos son los resultados:
SELECT @@GLOBAL.sql_mode;
STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION

SELECT @@SESSION.sql_mode;
STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION

De nuevo mil gracias por su colaboración.

Atentamente;

OSWALDO GAITAN ARAQUE
Bendiciones!!

Etiquetas: campo, insert, php, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:03.