sql >> Database >  >> RDS >> PostgreSQL

Slaapstandfout:huidige transactie is afgebroken, opdrachten genegeerd tot einde transactieblok

Het betekent waarschijnlijk dat sommige van uw zoekopdrachten niet zijn uitgevoerd. Als u veel vragen heeft over een transactie, bijvoorbeeld

  • begin transactie
  • query1
  • query2
  • query3
  • transactie voltooien

en query2 genereert een fout, en wanneer u query3 probeert uit te voeren, krijgt u deze fout.

  • begin transactie
  • query1 (geslaagd)
  • query2 (fout, er is iets misgegaan)
  • query3 (uitzondering zoals die van jou wordt gegenereerd)
  • transactie voltooien

U moet de uitzondering die is gegenereerd door query2 afhandelen en afhandelen. Toon een fout aan de gebruiker, zet transactie terug, probeer nooit query3 uit te voeren.

Kijk ook hier:http://www.faqs.org/docs/ppbook/x15040 .htm

BIJWERKEN

Om de transactie te voltooien:

List object = null; 
try {
  org.hibernate.Transaction tx = session.beginTransaction(); 
  try { 
    Query q = session.createQuery("from Table where lower(translatedText) like lower('%" + term + "%') or lower(translatedAscii) like lower('%" + term + "%') or lower(originalAscii) like lower('%" + term + "%')"); 
    object = (List<Table>) q.list(); 
  } catch (Exception e) {
    e.printStackTrace(); 
  } finally {
    //You can safely rollback here because you are not changing anything in the DB.
    //If you change something, you should commit transaction at the end of try block,
    //and here check if it is still active and rollback if it is.
    tx.rollback();
  }
  return object; 
} catch (HibernateException e) {
  throw new RuntimeException("Could not begin transaction");
}



  1. Voeg binair groot object (BLOB) in PostgreSQL in met libpq vanaf een externe machine

  2. update kolommenwaarden met kolom van een andere tabel op basis van voorwaarde

  3. PHPmailer - Meerdere e-mails versturen

  4. Hstore-extensie installeren in django-neustests