Extraño problema en MySQL

Iniciado por Skeletron, 24 Febrero 2010, 08:26 AM

0 Miembros y 1 Visitante están viendo este tema.

Skeletron

Hola gente...
Quiero aclarar algo antes de que me traten de loco:
"Todo lo que diga aquí, es REAL, y no estoy loco"

Ok.. Aclarado esto, paso al tema:

Imaginen un programa en VB.NET que durante unos 12 dias funcionó PERFECTAMENTE.. y SIN TOCAR NADA, de un dia para el otro deja de funcionar...
(hasta aca todo parece normal)

Que es lo que no funciona?
Resulta que mi programa, hizo durante estos dias lo siguiente:
Tomó 50 links que hay en la base de datos.
Procesó los 50 links, y encontró nuevos.
guardó los links nuevos
al terminar los 50, pide 50 nuevos
y repetir este proceso.

Hasta hoy, tenía 14.000.000 de links en la base de datos...
Todo perfecto.. FUNCIONA PERFECTO!!! (hasta el momento)
Hoy tipo 2PM, dejo el programa funcionando, y me voy a hacer unos trabajos.
Vuelvo a las 9PM y veo que el programa funciona correctamente, ya que esta descargando links nuevos, pidiendo 50 nuevos, y demas (tengo un LABEL que me muestra el estado del programa)
En un momento dado, miro el link que se estaba procesando.. y me pareció haberlo visto hoy a las 2PM cuando me fuí a hacer esos trabajos..
Así que me quedo mirando, y veo que el programa hace lo siguiente:
Tomo (con SELECT) 50 links de la base de datos, así:
SELECT link FROM links where listo =0 limit 50;
Es muy facill!!!.. se entiende... Digamos que, estoy descagando 50 links que NO ESTEN LISTOS (listo=0)
una vez descargaados, le hago un UPDATE a esos 50 (hago un for each en vb.net) y le hago listo=1
Ésto funcionó PERFECTAMENTE SIEMPRE TIOS!!!

Todo sigue funcionando perfectamente.. sigo (depurando) el procesamiento de la aplicacion, y veo que en la base de datos, al hacer el UPDATE listo=1, no da error... (obviamente que NO, ya que hago update a exactamente lo mismo que trae la sentencia SELECT con los 50)
procesa los 50 links.. (aca viene el problema) y luego de termina, pide 50 nuevos, Y SON LOS MISMOS 50 QUE PIDIO ANTES!!!!.....
Entonces.. digo: "WOW!!!!!!!!... que pasará???? hago mal el update???"
Pensé que hice mal el update...
Así que voy a depurar nuevamente y detengo justo la aplicacion luego del SELECT.
miro el primer item que me devolvió...
Supongamos que el item es:
http://google.com.ar
entonces digo: "Voy a ver en la base de datos que valor LISTO tiene...
Hago un:
select * from links where link='http://google.com.ar'
Y....

NO EXISTE LA ENTRADA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
---------------------- :o :o :o :o :o :o :o :o :o :o :o :o :o :o :o -------------------------------

COMO ***** NO VA A EXISTIR LA ENTRADA SI LA ACABA DE "SELECTAR"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Obviamente, ingresé a un admin de MYSQL, y veo lo siguiente:
Al hacer un SELECT * FROM links WHERE listo=0
Los links que me devuelven, son iguales a los que aparecen en mi aplicacion...
El link, es exactamente éste:
¢dailytimes£.pk/default½?page=2010
(el 1º link de los 5)
Entonces, escribo lo siguiente:
select * from links where link='¢dailytimes£.pk/default½?page=2010'

Y ME DICE QUE NO HAY ENTRADAS!!!!!!!

O SEA TIOSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
Es como que, ustedes estan en una pieza y pregunten: "Hola.. Los que se llaman JOSE, levanten la mano" y la levantan 5, "Ok, ahora todos los josé, vengan" Y NADIE VIENE!!..
PERO COMOOOO!!?!?!??!?!?!?!?

Ahora mismo me pongo a mostrar un puto video

Skeletron

#1
Disfruten:
[youtube=425,350]http://www.youtube.com/watch?v=1m-_2VEqAik[/youtube]

Y como para empeorar todo..
miren:


Como verán, aparece otro texto del que aparece en el otro gestor (y en mi programa).



Me va a dar un ataque...

Saben que descubri ahora?
Que si pongo unos 10 hilos trabajando en mi programa... 5 (aproximadamente) quedan "clavados" siempre analizando esos.. y repitiendo la accion siempre.. PERO, los otros 5 siguen procesando PERFECTAMENTE!!!!

COmo si hubiese un problema en el UPDATE... PERO SOLAMENTE CON ESAS POCAS ENTRADAS!

Skeletron

ARREGLE EL PROBLEMA pero no lo solucioné!...

Las sentencias que daban error eran 6.. entonces hice:
UPDATE FROM links SET listo=1 WHERE listo=0 LIMIT 6;

Con eso "salté" esas 6 consultas que daban error... Pero.. igualmente.. Porque pasó todo eso?

Skeletron

AAaaaaaaaaaahhhhhhhhh...
Naddiieee diceee nadaaa en este temmaaa!!!

^Tifa^

Si yo entendiera el tema posiblemente si  :P  pero como no entiendo 1 sola linea de lo que haces referencia pos no  :-X

Ahora si la situacion no te ocurre cuando consultas a MySQL por un cliente MySQL, el problema no es de MySQL sino a lo mejor del API con el que trabaja NET

Haz verificado imprimiendo en pantalla que la data que mandas por NET sea igual que la que llega a MySQL?

Skeletron

Lo he probado con el el phpmyadmin, con el programa mio en .net y con éste otro programa que aparece en el video, que no es de .net

Obviamente, imprimi los resultados.. y muestran 2 resultados diferentes las mismas consultas.. y juro que son las mismas.. no hay problemas de order by ni nada de eso..

Es para locos ese error..
Si tu no entiendes de él.. imagina yo