Hola a todos, quería ver si me dan una mano con algo que me pasa a partir de migrar de PG 8.4 y 8.2 a PG9.03. Tenemos unos cuantos sistemas corriendo hace años en PG + genesus (java) y a partir de migrar a la versión 9.0.3 estamos teniendo algunos errores que antes no salían. A continuacion les paso que tipo de sentencias nos generan el error (siempre el mismo error).

Este error sale en el sistema cuando se ejecuta una operación que requiere el modo exclusivo sobre las tablas.

(Este codigo lo arma por ejemplo cuando hay cambios de estructura, que es necesario borrar toda la tabla, o dentro

del codigo fuente cuando nosotros necesitamos borrar toda la tabla entera.)

Genexus arma en su codigo lo siguiente:

"  LOCK TABLE HC05T00 IN EXCLUSIVE MODE"

 Nosotros no tenemos forma de cambiar esta sentencia.

Aparentemente el Posgres cuando trata de ejecutar esto arroja el siguiente error.

java.sql.SQLException: ERROR: LOCK TABLE can only be used in transaction blocks

 at org/postgresql/Connection.ExecSQL
 at org/postgresql/Connection.ExecSQL
 at org/postgresql/jdbc1/Statement.execute
 at org/postgresql/jdbc1/Statement.executeUpdate
 at com/genexus/db/driver/GXStatement.executeUpdate
 at com/genexus/db/SentenceProvider.executeStatement
 at com/genexus/db/DirectStatement.postExecute
 at com/genexus/db/DataStoreProvider.execute
 at com/genexus/db/DataStoreProvider.execute

Aclarando que lo único que cambiamos fue la versión del postgres les pido si me pueden dar una mano con esto ya que los desarrolladores no tienen mucha intención(es muy engorroso) de tocar las sentencias cada vez que hay que modificar estructuras de las bases de datos.
Si necesitan mas datos se los facilito ya que estamos un poco preocupados.
Desde ya gracias por adelantado.

Alejandro


Responder a