Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Falla De Mysql Server 5.1
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Falla De Mysql Server 5.1 
 
Saludos amigos,

En algunas ocasiones me he topado con un pequeño problema de mysql server 5.1
en ubuntu 10.04, 10.10, 11.04 y en ubuntu 13.04.

Tengo un boton en cierto formulario para borrar registros con la siguiente instrucción:

delete from mov_clientes where transaccion="& transaccion.text &"

El resultado normal debería ser que se eliminen todos los registros que tienen ese número
de transacción, pero en ocasiones muy raras que no me logro explicar tiende a borrar
cientos o miles de registros como si la sentencia fuera la siguiente:

delete from mov_cliente

o sea se ignora la clausula WHERE.

Me he cansado de buscar la falla en mi código, pero ni rastros. La idea que se me ocurre
es bloquear a nivel de mysql cualquier delete que no tenga una clausula where definida.

Las tablas son de tipo MYISAM.

¿alguna sugerencia?

Gracias.
 



 
última edición por alessandri el Jueves, 17 Septiembre 2015, 19:20; editado 1 vez 
alessandri - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Falla De Mysql Server 5.1 
 
Supongo que el código que usas, por lo que aquí pones, es:

miconexion.Exec("delete from mov_clientes where transaccion=" & transaccion.text )


Dos cosas a tener en cuenta. Una sobre la consulta, otra sobre tu diseño de base de datos:

Sobre la consulta:
-Cuando escribes eso puedes encontrarte con que dentro de transaccion, que supongo que es un TextBox, haya caracteres "no estándar", espacios, acentos, *, comillas y cosas así eso puede mandar al diablo la consulta. Ahí te faltaría un entrecomillado:
miconexion.Exec("delete from mov_clientes where transaccion=\"" & transaccion.text & "\"")

    O, mucho mejor todavía: Deja que sea gambas el que hace esa conversión usando su sintáxis "natural":
miconexion.Exec("delete from mov_clientes where transaccion=&1", transaccion.text )

Verás como con eso no tienes problemas.

Sobre tu base de datos:
El hecho de utilizar un textbox para referenciar claves únicas de tu tabla me sugiere que estás usando un campo de texto como clave primaria de una tabla. Eso, si es así, es un error. Y más aún si la muestras previamente en pantalla sin la precaución adecuada (solo lectura) porque el usuario podría escribir cosas que perjudiquen las consultas. Utiliza siempre claves primarias numéricas -mejor aún autonuméricas- y basa tus consultas en ellas. no tendrás ese tipo de problemas nunca.

Saludos.
 




===================
No podemos regresar
 
última edición por shordi el Jueves, 17 Septiembre 2015, 20:55; editado 1 vez 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Falla De Mysql Server 5.1 
 
¿De qué tipo es el campo 'transacción' en la base de datos? Porque estás haciendo una comparación con una cadena de texto y si el campo es numérico puedes tener problemas.

Asimismo, si el campo es numérico (INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT) estás usando un control en tu formulario que no es en principio apto para ello. Un control adecuado sería un ValueBox usando la propiedad Value, que devuelve el tipo Integer directamente para compararlo con el contenido de la base de datos.

Por tanto, deberías clarificar este punto para poder ayudarte mejor. Y no olvides que puedes  y debes usar sustituciones en las cadenas sql, para evitar las comillas y asegurarte de que se pasa el tipo correcto de dato automáticamente. Si tienes dudas sobre ésto, pregunta de nuevo.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Falla De Mysql Server 5.1 
 
Gracias amigos.

según lo que me recomiendan, es posible que el problema este en el objeto.
no porque los usuarios introducen datos en el, sino, porque es un Label donde
se recupera el numero de transacción el cual usa la propiedad text, (que es string)
y el campo el la DB es INT.
Probare bien y luego les digo.

Gracias.
 



 
alessandri - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Si Falla Con Un Navegador Le Ponemos Otros Ja v3ctor General 3 Miercoles, 18 Marzo 2015, 20:41 Ver último mensaje
jsbsan
No hay nuevos mensajes Cuando Un Ejecutable Gambas Falla Shell General 12 Miercoles, 02 Diciembre 2015, 10:02 Ver último mensaje
Shell
No hay nuevos mensajes SQL Server CarlotAVelez General 3 Viernes, 19 Febrero 2016, 15:56 Ver último mensaje
vicr
No hay nuevos mensajes Falla En Los Datos De La Consulta willyanjose Bases de Datos 2 Jueves, 30 Junio 2016, 02:22 Ver último mensaje
willyanjose
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron