Vous n'êtes pas identifié(e).
Bonjour à tous,
J'ai actuellement un problème pour faire fonctionner mon application avec hibernate.
lorsque je lance l'appli, je trouve dans le fichier stdout l'erreur suivante:
ERROR org.hibernate.util.JDBCExceptionReporter - ERROR: current transaction is aborted, commands ignored until end of transaction block
Je pense que ça vient de l'autocommit de Postgre mais je n'arrive pas à le désactiver. J'ai lu quelque part que c'était impossible sur les dernières versions...
J'aimerais bien pouvoir faire fonctionner tout ça sans modifier le code de mon appli qui fonctionnait sous Oracle...
Merci par avance de votre aide.
Hors ligne
Ne serait-ce pas parce que tu as eu une erreur précédemment dans ta transaction?
Avec Oracle, il me semble que tu peux très bien ignorer une erreur et continuer ta transaction (ce qui est sale, soit dit en passant...). Avec PostgreSQL, non. Il faut donc que tu cherches l'erreur précédente pour connaître la cause de ton problème. Idéalement, il faudrait aussi que tu revoie la gestion des erreurs dans ta transaction...
(il est plus simple de regarder dans la log de PostgreSQL, j'ai déjà eu quelques soucis avec Hibernate, j'ai l'impression qu'il ne reporte pas toujours correctement les erreurs, en plus il est très bavard)
Pour le fait d'être en autocommit ou non, ça doit se régler dans Hibernate.
Hors ligne
Par ailleurs, vu le message (current transaction is aborted), la session n'est pas en autocommit : ce message n'arrive que dans les transactions manuelles à ma connaissance.
Marc.
Hors ligne
Bonjour,
Je n'arrive toujours pas à lancer Hibernate avec PostgreSQL.
Quand je regarde le log de PostgreSQL, j'ai une erreur qui se répète:
%t ERROR: current transaction is aborted, commands ignored until end of transaction block
%t STATEMENT: SELECT NULL AS TABLE_CAT, n.nspname AS TABLE_SCHEM, c.relname AS TABLE_NAME, CASE n.nspname ~ '^pg_' OR n.nspname =
'information_schema' WHEN true THEN CASE WHEN n.nspname = 'pg_catalog' OR n.nspname = 'information_schema' THEN CASE c.relkind WHEN 'r' THEN 'SYSTEM
TABLE' WHEN 'v' THEN 'SYSTEM VIEW' WHEN 'i' THEN 'SYSTEM INDEX' ELSE NULL END WHEN n.nspname = 'pg_toast' THEN CASE c.relkind WHEN 'r' THEN
'SYSTEM TOAST TABLE' WHEN 'i' THEN 'SYSTEM TOAST INDEX' ELSE NULL END ELSE CASE c.relkind WHEN 'r' THEN 'TEMPORARY TABLE' WHEN 'i' THEN
'TEMPORARY INDEX' ELSE NULL END END WHEN false THEN CASE c.relkind WHEN 'r' THEN 'TABLE' WHEN 'i' THEN 'INDEX' WHEN 'S' THEN 'SEQUENCE' WHEN 'v'
THEN 'VIEW' ELSE NULL END ELSE NULL END AS TABLE_TYPE, d.description AS REMARKS FROM pg_catalog.pg_namespace n, pg_catalog.pg_class c LEFT JOIN
pg_catalog.pg_description d ON (c.oid = d.objoid AND d.objsubid = 0) LEFT JOIN pg_catalog.pg_class dc ON (d.classoid=dc.oid AND dc.relname='pg_class') LEFT JOIN
pg_catalog.pg_namespace dn ON (dn.oid=dc.relnamespace AND dn.nspname='pg_catalog') WHERE c.relnamespace = n.oid AND c.relname LIKE 'PROBABLYNOT'
AND (false OR ( c.relkind = 'r' AND n.nspname !~ '^pg_' AND n.nspname <> 'information_schema' ) ) ORDER BY TABLE_TYPE,TABLE_SCHEM,TABLE_NAME
Je ne sais pas d'où elle provient...
Hors ligne
C'est le même problème. Je m'explique : il y a en fait 2 choses dans ton problème :
1 : une première erreur a eu lieu dans la transaction (elle devrait apparaître dans la log). Tu n'as pas fourni cette erreur, donc impossible de t'aider là-dessus...
2 : l'erreur n'est pas gérée, ce qui entraîne les erreurs "current transaction is aborted..."
En cherchant un peu on trouve une explication très simple :
http://archives.postgresql.org/pgsql-ge … g00513.php
Au fait, c'est au démarrage que se produit la série d'erreurs, non?
En conclusion, trouve la toute première erreur et poste-là avec l'ordre SQL qui l'a causée.
Hors ligne
Oui, les erreurs se produisent au démarrage.
Je pense que l'erreur qui fait planter est celle-ci:
%t ERROR: syntax error at or near "session" at character 7
%t STATEMENT: alter session set nls_date_format='DD/MM/YYYY'
Hors ligne
%t STATEMENT: alter session set nls_date_format='DD/MM/YYYY'
Ah ça, c'est de l'Oracle pur jus! Ton Hibernate pense avoir affaire à une base Oracle.
Tu devrais sans doute vérifier le paramétrage d'Hibernate.
Hors ligne
En fait l'erreur venait de l'application et pas de Hibernate... j'ai corrigé tout ça et l'appli se lance à présent.
Merci pour votre aide!
Hors ligne