Ver Mensaje Individual
  #16 (permalink)  
Antiguo 24/11/2011, 09:47
el_apronte
 
Fecha de Ingreso: enero-2009
Mensajes: 165
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: como evitar que mysql se cuelgue despues de un UPDATE

Gracias quimfv!
te cuento, el update sobre la clave primaria IDPropiedad ya lo quité junto con el limit y corregí el formato de la fecha, de momento viene funcionando todo de maravilla!
Tambíen liberé espacio de la tabla, baje de 18000 entradas a 10000 y parece que va mejor... puede que por un tiempo no me traiga problemas (eso espero)
igual estoy capturando como me sugeristeis via mail todos los updates que se hacen, así que cuando se cuelgue, probablemente no esté tan a ciegas como venía...

Cita:
Iniciado por quimfv Ver Mensaje
Lo que ya no es de estilo es que estas pasando booleanos a '' cadena vacia eso deberia dar error un booleano es 1=true 0=false o null pero no '' cadena vacia (no se si MySql tambien lo passa a null ... el manual dice que todo valor distinto de cero es considerado TRUE pero en los ejemplos solo habla de valores numericos, no se que hace con un string).
Cuando envío el campo vacío lo pasa a 0 y sobreescribe el 1 que existía, con esto no "parece" haber problema al igual que los delimitadores, sé lo que me comentas, pero como no da error me resultó mas rápido construirlo de esa manera.

Cita:
Iniciado por quimfv Ver Mensaje
Por otro lado estas modificando todos los campos, mi pregunta es efectivamente se modifican todos siempre?
Si es que si nada, si no un script te podria construir un update dinamico que solo modifique los campos que realmente se hayan modificado...
No, cambian solo algunas cosas. Había pensado hacer un update dinámico como el que me comentas para reemplazar solo los valores que han cambiado, pero había observado en alguna versión de phpmyadmin (que lo acabo de mirar y por lo visto no es en las versiones que tengo ahora, o solo lo hace en algunos casos, o yo he visto cualquier cosa en su momento! ...no sería raro... ) construye una sintaxis super compleja, por ejemplo:
UPDATE 'tabla' set el_campo_que_cambia = 'valor'
WHERE
campo_1 = 'valor_campo_1' AND
campo_2 = 'valor_campo_2' AND
campo_3 = 'valor_campo_3'
(etc... toooodos los campos de la tabla)
LIMIT 1
de ahí había sacado lo del limit 1

Ahora lo he mirado de nuevo y no, lo hace como bien dices:
UPDATE propiedades set telefono = '' WHERE IDPropiedad = 57679 (en versión phpMyAdmin - 3.3.9)
y en phpMyAdmin - 2.11.11.3 mete el "limit 1"

Por tanto me preocupaba mandar una sintaxis tan escueta cuando phpMyAdmin era tan explícita... pero mi percepción me indica que sería más rápido y mejor hacerlo como me dices. Es el paso siguiente que haré antes de dividir las tablas si vuelven los problemas.

Cita:
Iniciado por quimfv Ver Mensaje
por cierto de que te sirve declarar
`telefono` varchar(20) NOT NULL default '',
es verdad! debo corregirlo y por defecto debe ser NO que es lo que necesito según como tengo programados los scripts

También había leído (que imagino que es una chapuza de mucho cuidado) que alguien sugería dividir el update o mejor dicho dividir la cadena e ir haciendo updates cada x cantidad de campos...
llegado el caso lo probaré y luego os digo... cualquier cosa antes de dividir la tabla y tener que cambiar toooodos los archivos del sitio!

quimfv mil gracias por tu tiempo! con estos cambios espero que se estabilice!
Saludos y gracias otra vez!