Foros del Web » Programación para mayores de 30 ;) » Java »

error al realizar una consulta a una base de datos cuando bloqueo una tabla

Estas en el tema de error al realizar una consulta a una base de datos cuando bloqueo una tabla en el foro de Java en Foros del Web. Hola a todos. Mi duda es la siguiente: Tengo un programa en java donde entre otras cosas bloqueo una tabla de una base de datos ...
  #1 (permalink)  
Antiguo 01/06/2004, 09:32
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años, 1 mes
Puntos: 7
Sonrisa error al realizar una consulta a una base de datos cuando bloqueo una tabla

Hola a todos. Mi duda es la siguiente:

Tengo un programa en java donde entre otras cosas bloqueo una tabla de una base de datos mediante una consulta sql. El problema lo tengo en que cuando intento realizar una consulta a otra tabla de mi base de datos que no es la que bloquee entonces me da el siguiente error:

java.sql.sqlException:General error, message from server: Table 'experimentos'
was not locked with lock tables

siendo 'experimentos' la tabla sobre la que estoy haciendo una consulta y no es la tabla que habia bloqueado antes.

Para que se entienda pongo a continuacion el trozo de codigo involucrado:

//con esto consigo bloquear la tabla servidores de mi base de datos para que no se pueda leer ni escribir
Statement consulta=conexion.createStatement();
consulta.executeUpdate("LOCK TABLES servidores WRITE");
//intento realizar una consulta sobre la tabla experimentos
consulta=conexion.createStatement();
ResultSet results=consulta.executeQuery("select * from experimentos");

Es esta ultima consulta donde me da el error. Lo curioso es que si desbloqueo la tabla 'servidores' antes de realizar mi consulta sobre la tabla experimentos funciona perfectamente.

¿pero porque me da problema si bloqueo una tabla y yo luego quiero consultar otra que no esta bloqueada?

He comprobado que si utilizo dos objetos Connection distintos con los que me conecto a la base de datos para cada una de las consultas, entonces no me da problemas.

Un saludo.
  #2 (permalink)  
Antiguo 01/06/2004, 09:55
 
Fecha de Ingreso: mayo-2004
Mensajes: 22
Antigüedad: 20 años
Puntos: 0
prueba a ver "LOCK TABLE servidores WRITE" en vez de "LOCK TABLES servidores WRITE" es decir, quítale la "S"
  #3 (permalink)  
Antiguo 01/06/2004, 11:08
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años, 1 mes
Puntos: 7
Gracias por responder javichivi. Hice eso que me dijistes de quitarle la 'S' pero sigue dando el mismo error.

¿alguien tiene alguna idea?

Un SALUDO
  #4 (permalink)  
Antiguo 02/06/2004, 12:36
 
Fecha de Ingreso: mayo-2004
Mensajes: 22
Antigüedad: 20 años
Puntos: 0
LOCK TABLE servidores IN EXCLUSIVE MODE
  #5 (permalink)  
Antiguo 03/06/2004, 13:15
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años, 1 mes
Puntos: 7
Soy aeb_asturias. Ya se porque me da este error. Al parecer cuando se trabaja con mysql si bloqueas una tabla entonces, ademas debes bloquear todas las demas tablas que consultas antes de desbloquear la tabla en cuestion porque sino se queja y da el error comentado antes.
En definitiva, si aunque solo te interesa bloquear una tabla, si vas a consultar otras antes de desbloquear esta primera, tambien las debes bloquear para que no te de error.

De todas formas, gracias por tu interes javichivi.

Un saludo
  #6 (permalink)  
Antiguo 16/06/2004, 08:18
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años, 1 mes
Puntos: 7
Soy yo de nuevo. Es que no se muy bien como hacer esto de bloquear tablas de mi base de datos mysql desde java. Como me obliga mysql a bloquear todas las tablas a las que voy a acceder antes de ejecutar la orden de desbloqueo, mi programa tiene muchos hilos que realizan tambien consultas a otras tablas que en teoría no deberían ser bloqueadas porque solo voy a leer de ellas pero sino me da el error ya comentado anteriormente.
¿deberé bloquear todas las tablas para no tener este problema?

¿cual sería el mejor modo de operar en estos casos?

¿existe alguna solución mejor que bloquear todas las tablas?

Un saludo
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 00:03.