পিএসকিউএলএক্সসেপশন: বর্তমান লেনদেন বাতিল করা হয়েছে, লেনদেনের অবরুদ্ধ হওয়ার অবধি অবধি কমান্ড উপেক্ষা করা হবে


152

আমি JBoss 7.1.1 ফাইনালের সার্ভার.লগ ফাইলে নিম্নলিখিত (কাটা) স্ট্যাকট্রেসটি দেখছি:

Caused by: org.postgresql.util.PSQLException: 
ERROR: current transaction is aborted, commands ignored until end of 
transaction block

at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2102)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1835)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:512)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:374)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:302)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.6.0_23]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [rt.jar:1.6.0_23]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [rt.jar:1.6.0_23]
at java.lang.reflect.Method.invoke(Method.java:597) [rt.jar:1.6.0_23]
at org.postgresql.ds.jdbc23.AbstractJdbc23PooledConnection$StatementHandler.invoke(AbstractJdbc23PooledConnection.java:455)
at $Proxy49.executeUpdate(Unknown Source)   at org.jboss.jca.adapters.jdbc.WrappedStatement.executeUpdate(WrappedStatement.java:371)
at org.infinispan.loaders.jdbc.TableManipulation.executeUpdateSql(TableManipulation.java:154) [infinispan-cachestore-jdbc-5.1.2.FINAL.jar:5.1.2.FINAL]
... 154 more

পোস্টগ্রিস লগ ফাইল পরিদর্শন করা নিম্নলিখিত বিবৃতি প্রকাশ করে:

STATEMENT:  SELECT count(*) FROM ISPN_MIXED_BINARY_TABLE_configCache
ERROR:  current transaction is aborted, commands ignored until end of transaction block
STATEMENT:  CREATE TABLE ISPN_MIXED_BINARY_TABLE_configCache(ID_COLUMN VARCHAR(255) NOT NULL, DATA_COLUMN BYTEA, TIMESTAMP_COLUMN BIGINT, PRIMARY KEY (ID_COLUMN))
ERROR:  relation "ispn_mixed_binary_table_configcache" does not exist at character 22

আমি JBoss 7.1.1 ফাইনালের সাথে চালিত ইনফিনিস্প্যান ব্যবহার করছি, যা 5.1.2. ফাইনাল।

সুতরাং আমার মনে হয় এটি ঘটছে:

  • ইনফিনস্প্যান এই SELECT count(*)...বিবৃতিটি চালানোর চেষ্টা করে যাতে দেখুন যে কোনও রেকর্ড রয়েছে কিনা ISPN_MIXED_BINARY_TABLE_configCache;
  • পোস্টগ্রিস, কোনও কারণে, এই বিবৃতিটি পছন্দ করে না।
  • ইনফিনিস্প্যান এটিকে উপেক্ষা করে এবং CREATE TABLEবিবৃতিটি দিয়ে এগিয়ে গিয়ে লাঙল ।
  • পোস্টফ্রেস বার্ফস কারণ এটি এখনও মনে করে যে এটি একই লেনদেন, যা ইনফিনিস্প্যান পিছনে ফিরে আসতে ব্যর্থ হয়েছে এবং এই লেনদেনটি প্রথম SELECT count(*)...বিবৃতি থেকে সূচিত হয়েছে ।

এই ত্রুটিটির অর্থ কী এবং এর চারপাশে কীভাবে কাজ করা যায় তার কোনও ধারণা?


ঠিক যদি আপনি এখানে আমার উপরে এসেছেন উপরের PSQLException: current transaction is aborted...( 25P02) এবং সম্ভবত এছাড়াও JPAবা সন্ধান করছেন Hibernate। অবশেষে এটি আমাদের (দুর্দান্ত!) লগব্যাকের ব্যবহারের কারণে একটি toString()ওভারলোডেড ডিএও বস্তুতে খাওয়ানো হয়েছিল যা ত্রুটির কারণ হয়েছিল এবং খুব সুন্দরভাবে গ্রাস করেছে (তবে আমার দ্বারা আকস্মিকভাবে নজর দেওয়া হয়নি): log.info( "bla bla: {}", obj )উত্পাদিত bla bla: [FAILED toString()]। এটিকে log.info( "bla bla: {}", String.valueOf( obj )এটিকে বাতিল-সুরক্ষিত করে তোলা, তবে এটি গিলে না ফেলে এবং এইভাবে কোনও সম্পর্কহীন কোয়েরিতে লেনদেনকে ব্যর্থ করে দেয়।
আন্দ্রেয়াস ডায়েরিচ

আমি একই ধরণের ত্রুটি পেয়ে যাচ্ছিলাম। বর্গাকার আগে আমাকে সংযোগটি ছেড়ে দিতে হয়েছিল। খনি কোডটি ছিল সংযোগ.কম ()
এমডি। আরিফুল আহসান

উত্তর:


203

আমি এই ত্রুটিটি জাভা এবং পোস্টগ্র্যাস্কল ব্যবহার করে একটি টেবিলে সন্নিবেশ করিয়েছিলাম got আমি ব্যাখ্যা করব যে আপনি কীভাবে এই ত্রুটিটি পুনরুত্পাদন করতে পারেন:

org.postgresql.util.PSQLException: ERROR: 
current transaction is aborted, commands ignored until end of transaction block

সারসংক্ষেপ:

আপনি এই ত্রুটিটি পাবার কারণ হ'ল আপনি কোনও লেনদেন প্রবেশ করেছেন এবং আপনার এসকিউএল কোয়েরিগুলির একটি ব্যর্থ হয়েছে এবং আপনি সেই ব্যর্থতাটি ডেকে আনিচ্ছেন এবং এটিকে উপেক্ষা করেছেন। তবে এটি পর্যাপ্ত ছিল না, তখন আপনি একই সংযোগটি ব্যবহার করেছিলেন, অন্য কোয়েরি চালানোর জন্য একই ট্রান্সঅ্যাকশনটি ব্যবহার করে। ব্যতিক্রমটি দ্বিতীয়টি, সঠিকভাবে গঠিত কোয়েরিতে ফেলে দেওয়া হয়েছে কারণ আপনি অতিরিক্ত কাজ করার জন্য একটি ভাঙা লেনদেন ব্যবহার করছেন। ডিফল্টরূপে পোস্টগ্র্যাস্কেল আপনাকে এটি করতে বাধা দেয়।

আমি ব্যাবহার করছি: PostgreSQL 9.1.6 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 4.7.2 20120921 (Red Hat 4.7.2-2), 64-bit".

আমার পোস্টগ্র্যাস্কিল ড্রাইভারটি হ'ল: postgresql-9.2-1000.jdbc4.jar

জাভা সংস্করণ ব্যবহার: Java 1.7

ব্যতিক্রমটি চিত্রিত করতে এখানে টেবিল তৈরির বিবৃতি দেওয়া হয়েছে:

CREATE TABLE moobar
(
    myval   INT
);

জাভা প্রোগ্রাম ত্রুটির কারণ:

public void postgresql_insert()
{
    try  
    {
        connection.setAutoCommit(false);  //start of transaction.

        Statement statement = connection.createStatement();

        System.out.println("start doing statement.execute");

        statement.execute(
                "insert into moobar values(" +
                "'this sql statement fails, and it " +
                "is gobbled up by the catch, okfine'); ");

        //The above line throws an exception because we try to cram
        //A string into an Int.  I Expect this, what happens is we gobble 
        //the Exception and ignore it like nothing is wrong.
        //But remember, we are in a TRANSACTION!  so keep reading.

        System.out.println("statement.execute done");

        statement.close();

    }
    catch (SQLException sqle)
    {
        System.out.println("keep on truckin, keep using " +
                "the last connection because what could go wrong?");
    }

    try{
        Statement statement = connection.createStatement();

        statement.executeQuery("select * from moobar");

        //This SQL is correctly formed, yet it throws the 
        //'transaction is aborted' SQL Exception, why?  Because:
        //A.  you were in a transaction.
        //B.  You ran a sql statement that failed.
        //C.  You didn't do a rollback or commit on the affected connection.

    }
    catch (SQLException sqle)
    {
        sqle.printStackTrace();
    }   

}

উপরের কোডটি আমার জন্য এই আউটপুট উত্পাদন করে:

start doing statement.execute

keep on truckin, keep using the last connection because what could go wrong?

org.postgresql.util.PSQLException: 
  ERROR: current transaction is aborted, commands ignored until 
  end of transaction block

সমাধান নীচে উপস্থিত:

আপনার স্বল্প কিছু সু্যোগ আছে:

  1. সহজ সমাধান: কোনও লেনদেন করবেন না। সেট connection.setAutoCommit(false);থেকে connection.setAutoCommit(true);। এটি কাজ করে কারণ ব্যর্থ এসকিউএল কেবলমাত্র একটি ব্যর্থ এসকিউএল স্টেটমেন্ট হিসাবে উপেক্ষা করা হবে। আপনি চান সমস্ত এসকিএল বিবৃতি ব্যর্থ স্বাগত জানাই এবং postgresql আপনাকে থামবে না।

  2. কোনও লেনদেনে থাকুন, তবে যখন আপনি সনাক্ত করেন যে প্রথম স্কোয়েলটি ব্যর্থ হয়েছে, তা হয় রোলব্যাক / পুনরায় শুরু করুন বা প্রতিশ্রুতিবদ্ধ / লেনদেন পুনরায় আরম্ভ করুন। তারপরে আপনি সেই ডাটাবেস সংযোগে যতগুলি বর্গক্ষেত্রের ক্যোয়ারী হিসাবে আপনি চান ব্যর্থ করতে পারেন continue

  3. যখন কোনও স্কেল স্টেটমেন্ট ব্যর্থ হয় তখন ফেলে দেওয়া ব্যতিক্রমটিকে ধরুন এবং উপেক্ষা করবেন না। তারপরে প্রোগ্রামটি ত্রুটিযুক্ত কোয়েরিতে থামবে।

  4. পরিবর্তে ওরাকল পান, আপনি যখন কোনও লেনদেনের মধ্যে সংযোগ নিয়ে কোনও প্রশ্ন ব্যর্থ হন এবং সেই সংযোগটি ব্যবহার চালিয়ে যান তখন ওরেकल কোনও ব্যতিক্রম ছুঁড়ে না।

PostgreSQL এর জিনিষ এই ভাবে করতে সিদ্ধান্তের প্রতিরক্ষা ইন ... ওরাকল ছিল মধ্যম লেট আপনি বোবা কাপড় না মধ্যে নরম আপনি উপার্জন এবং এটি পাশ কাটিয়ে যায়।


10
লল @ বিকল্প 4 ... আমি ওরাকলে বেশ কিছুটা উন্নয়ন করেছি, এবং সম্প্রতি পোস্টগ্রিস ব্যবহার শুরু করেছি ... সত্যিই বিরক্তিকর যে পোস্টগ্র্রেস এটি করে, এবং এখন আমাদের সত্যিকার অর্থে আমাদের প্রোগ্রামের একটি বড় অংশ পুনরায় লিখতে হবে যে আমরা ওরাকল থেকে পোস্টগ্র্রেসে পোর্ট করছে। ওরাকল এর মতো আচরণ করা কিন্তু স্বতঃশক্তি ছাড়াও কেন প্রথমটির মতো বিকল্প নেই ?
ADTC

2
কিছু পরীক্ষার পরে জানা গেল যে অপশন 2 আপনি ওরাকল আচরণে সবচেয়ে কাছের হতে পারেন। যদি আপনাকে একাধিক আপডেট জারি করতে হয় এবং একটি ব্যর্থতা পরবর্তী আপডেটগুলি থামানো উচিত নয়, যখন ধরা পড়ে তখন কেবল তার সাথে কল rollback()করুন । [ যাইহোক আমি বুঝতে পেরেছিলাম যে এটি পোস্টগ্র্রেএসকিউএল দর্শনের সাথে সামঞ্জস্যপূর্ণ যা ব্যবহারকারীকে সমস্ত কিছু স্পষ্ট করে তুলতে বাধ্য করে, যেখানে অরাকল স্পষ্টতই অনেক কিছুর যত্ন নেওয়ার দর্শন ConnectionSQLException
রাখে

2
বিকল্প 2 এ অসম্ভব শাখা রয়েছে or commit/restart the transaction। আমি দেখতে পাচ্ছি ব্যতিক্রমের পরে প্রতিশ্রুতি দেওয়ার উপায় নেই। যখন আমি প্রতিশ্রুতিবদ্ধ হওয়ার চেষ্টা করি - পোস্টগ্রেএসকিউএল করrollback
turbanoff

1
আমি @ টারবানফ দ্বারা উত্থাপিত সমস্যাটি নিশ্চিত করতে পারি। এটি সরাসরি সাথে পুনরুত্পাদনও করা যেতে পারে psql। (১) লেনদেন শুরু করুন, (২) কিছু বৈধ বিবৃতি প্রদান করুন, (৩) একটি অবৈধ বিবৃতি প্রদান করুন, (৪) প্রতিশ্রুতিবদ্ধ -> পিএসএইচএল অঙ্গীকার না করে রোলব্যাক করবে।
আলফায়া

1
postgresql.org/message-id/op.ur57x9ue33x80h%40insanity.lain.pl এই বিষয়ের একটি আকর্ষণীয় আলোচনা। যদি এই সমস্যাটি সীমাবদ্ধতা লঙ্ঘনের দ্বারা উদ্দীপিত হয় তবে পোস্টগ্রিসকিউএল ডিভস সময়ের আগে কোনও সংঘাতের জন্য (আপডেট / সন্নিবেশের আগে ক্যোয়ারী) পরীক্ষা করা বা savepointsআপডেট / সন্নিবেশের আগে পয়েন্টটিতে ফিরে যেতে ব্যবহার করার পরামর্শ দেয়। নমুনা কোডের জন্য স্ট্যাকওভারফ্লো . com/a/28640557/14731 দেখুন ।
গিলি

27

যে বিবৃতিটি দিয়েছিল তার আগে আউটপুট পরীক্ষা করুন current transaction is aborted। এর অর্থ হ'ল ডেটাবেস এমন একটি ব্যতিক্রম ছুঁড়ে দিয়েছে যা আপনার কোড উপেক্ষা করেছে এবং এখন পরবর্তী প্রশ্নগুলি কিছু ডেটা ফেরত প্রত্যাশা করবে।

সুতরাং আপনার কাছে এখন আপনার অ্যাপ্লিকেশনের মধ্যে একটি রাজ্য মিল নেই, যা বিবেচনা করে যে জিনিসগুলি ভাল, এবং ডাটাবেস, যার জন্য আপনাকে প্রথম থেকেই আপনার লেনদেনটি রোলব্যাক এবং পুনরায় শুরু করতে হবে।

এই জাতীয় ক্ষেত্রে আপনার সমস্ত ব্যতিক্রম এবং রোলব্যাক লেনদেন ধরা উচিত।

এখানে একটি অনুরূপ ইস্যু।


এটি দুর্দান্ত, এই ক্ষেত্রেটি ব্যতীত এটি ইনফিনিস্প্যান, একটি তৃতীয় পক্ষের গ্রন্থাগার হবে, পোস্টগ্র্রেসের সাথে কথা বলবে, এবং আমার কোড নয়।
জিমিডি

ঠিক আছে, পরিস্থিতি এখনও একইরকম - লেনদেনটি ফিরিয়ে আনতে হবে। আপনি যে লাইব্রেরিটি ব্যবহার করছেন তার নতুন সংস্করণ রয়েছে কিনা তা পরীক্ষা করে দেখুন বা তাদের বাগ ট্র্যাকারের মধ্যে বিষয়টি উত্থাপন করুন। আপনি যদি SQLসমস্যার সঠিক কারণটি খুঁজে পান তবে আপনার পোস্টগ্র্রেএসকিউএল এক্সটেনসিবিলিটি ব্যবহার করে সমস্যাটি দূর করার কিছু ক্ষেত্র থাকবে।
ভাইগোরভ

দেখে মনে হচ্ছে আপনি আমার সন্দেহগুলি নিশ্চিত করেছেন - আমি এখন ইনফিনিস্প্যান 5.1.2 উত্সটি দেখতে যাচ্ছি।
জিমিডি

সত্য কথা বলতে গেলে, টেবিলমনিপুলেশন ক্লাসে, নির্বাচিত গণনা (*) চালানোর প্রচেষ্টার আশেপাশে একটি চেষ্টা রয়েছে .... সম্ভবত পোস্টগ্র্রেস চালক প্রত্যাশিত ব্যতিক্রমগুলির মধ্যে একটি ছুঁড়ে ফেলছেন না। আমি আরও একটি ডিবাগার জেবসকে হুক করব আরও জানার চেষ্টা করার জন্য।
জিমিডি

এই বাগে প্রশ্নের মধ্যে ইনফিনিস্প্যান কোডটি প্রস্তাব করা হয়েছিল: ইস্যুগুলি.জ্বোস.আর.এস. / ব্রোস / আমি এটিতে একটি ডিবাগার সংযুক্ত করেছি একটি লাইভ জেবিস .1.১.১ ইনস্ট্যান্সে চলছে এবং পোস্টগ্র্রেস সঠিক জায়গায় ব্যতিক্রম ছুঁড়ে দিচ্ছে। সম্ভবত এটি JdbcUtil.safeClose () বিবৃতি যা তাদের কাজ করছে না। আমি এটি ইনফিনিস্প্যান দিয়ে উত্থাপন করব।
জিমিডি 16 '

13

আমি মনে করি যে সেরা সমাধানটি java.sql.SavePoint ব্যবহার করুন।

কোয়েরি কার্যকর করার আগে যা এসকিউএলএক্সসেপশন ব্যবহারের পদ্ধতি কানেকশন.সেটসেভপয়েন্ট () ব্যবহার করতে পারে এবং যদি ব্যতিক্রম হয় তবে আপনি কেবলমাত্র এই সেভপয়েন্টে রোলব্যাক ফেলবেন সমস্ত লেনদেন রোলব্যাক নয়।

উদাহরণ কোড:

Connection conn = null;
Savepoint savepoint = null;
try {
    conn = getConnection();
    savepoint = conn.setSavepoint();
    //execute some query
} catch(SQLException e) {
    if(conn != null && savepoint != null) {
        conn.rollback(savepoint);
    }
} finally {
   if(conn != null) {
      try {
          conn.close();
      } catch(SQLException e) {}

   }
}

আমি দুর্ঘটনাক্রমে কোনওভাবে হ্রাস পেয়েছি, কেবলমাত্র লক্ষ্য করা গেছে। উদ্দেশ্যমূলক ছিল না, উত্তর সম্পাদনা করা না হলে আমি পূর্বাবস্থায় ফেরাতে পারি না।
সার্বেরোস

সেভপয়েন্ট পন্থা হ'ল আসল সমাধান। পিএইচপি, ডক্ট্রাইন 2 এবং পোস্টগ্রিসের পরিবেশেও আমার জন্য কাজ করে (9.5)। ধন্যবাদ
হেলভেট

6

এই আচরণের সাথে সম্পর্কিত পোস্টগ্রেস্কএল জেডিবিসি ড্রাইভারটিতে কিছু কাজ হয়েছে:
দেখুন https://github.com/pgjdbc/pgjdbc/pull/477

সেট করে এখন এটি সম্ভব

স্বয়ংসংরক্ষিত = সবসময়
সংযোগে ( https://jdbc.postgresql.org/docamentation/head/connect.html দেখুন ) 'বর্তমান লেনদেনটি বাতিল' সিন্ড্রোমা এড়ানোর জন্য।
বিবৃতি কার্যকর করার আশেপাশে একটি সেভপয়েন্ট হ্যান্ডেল করার কারণে ওভারহেড খুব কম রাখা হয় (বিশদগুলির জন্য উপরের লিঙ্কটি দেখুন)।


5

রেল অন রেলস পিজিতে, আমি একটি মাইগ্রেশন তৈরি করেছি, আমার ডিবি স্থানান্তরিত করেছি, তবে আমার বিকাশ সার্ভারটি পুনরায় চালু করতে ভুলে গিয়েছি। আমি আমার সার্ভারটি পুনরায় চালু করেছি এবং এটি কার্যকর হয়েছে।


এটি আমার ক্ষেত্রেও ছিল। ভেবেছিলাম এটি বোকা কিছু হওয়া উচিত, কারণ আমি জটিল কিছু করার চেষ্টা করিনি didn't
তাশস

4

এই ত্রুটির কারণ হ'ল বর্তমান ডাটাবেস অপারেশন চালিত হওয়ার আগে ভুল অপারেশন পরিচালিত হওয়ার আগে অন্যান্য ডাটাবেস রয়েছে (আমি আমার চীনাকে ইংরেজিতে অনুবাদ করতে গুগল অনুবাদ ব্যবহার করি)



2

আপনার রোলব্যাক করা দরকার। জেডিবিসি পোস্টগ্রিস ড্রাইভারটি বেশ খারাপ। তবে আপনি যদি নিজের লেনদেন রাখতে চান এবং কেবল সেই ত্রুটিটি রোলব্যাক করেন তবে আপনি সেভপয়েন্টগুলি ব্যবহার করতে পারেন:

try {
_stmt = connection.createStatement();
_savePoint = connection.setSavepoint("sp01");
_result = _stmt.executeUpdate(sentence) > 0;
} catch (Exception e){
 if (_savePoint!=null){
 connection.rollback(_savePoint);
}
}

এখানে আরও পড়ুন:

http://www.postgresql.org/docs/8.1/static/sql-savepoint.html


2

আমার একই সমস্যা ছিল কিন্তু তখন বুঝলাম ডাটাবেসে একই নামের একটি টেবিল রয়েছে। মুছে ফেলার পরে আমি ফাইলটি আমদানি করতে সক্ষম হয়েছি।


এটি আমার ইস্যু ছিল, আমার জন্য টেবিলগুলি দুটি ভিন্ন স্কিমার জুড়ে ছিল।
টমেটো

0

এটি পোস্টগ্র্রেএসকিউএল-এর খুব অদ্ভুত আচরণ, এমনকি ব্যতিক্রমটিকে স্পষ্টভাবে উপেক্ষা করার কারণে - "পোস্টগ্র্রেএসকিউএল দর্শনের সাথে ব্যবহারকারীকে সমস্ত কিছু স্পষ্ট করে তুলতে বাধ্য করার" সাথে সামঞ্জস্যও নয়। এমনকি এই প্রতিরক্ষাও ধরে রাখে না। এই ক্ষেত্রে ওরাকল আরও অনেক বেশি ব্যবহারকারী-বান্ধব এবং (আমার হিসাবে) সঠিকভাবে আচরণ করে - এটি বিকাশকারীকে একটি পছন্দ রেখে দেয়।


0

আপনি যদি ভলিউমের ডিস্কের জায়গার বাইরে থাকেন তবে এটি ঘটতে পারে।


আমি বুঝতে পারি এটি সর্বাধিক সাধারণ কারণ নয়, তবে এটি একটি সার্ভারের ক্ষেত্রেই ছিল যা আমাকে সমস্যা সমাধানের জন্য বলা হয়েছিল। সুতরাং আমি মনে করি এটি একটি সম্ভাব্য কারণ হিসাবে তালিকাভুক্ত করা উচিত।
গ্রেগবি


0

আমি জেডিবিআই পোস্টগ্রিসের সাথে ব্যবহার করছি এবং একই সমস্যার মুখোমুখি হয়েছি, অর্থাৎ পূর্ববর্তী লেনদেনের বিবৃতি থেকে কিছু বাধা লঙ্ঘনের পরে, পরবর্তী বিবৃতিগুলি ব্যর্থ হবে (তবে আমি কিছুক্ষণ অপেক্ষা করার পরে, 20-30 সেকেন্ড বলি, সমস্যাটি চলে যায় )।

কিছু গবেষণার পরে, আমি সমস্যাটি দেখতে পেয়েছিলাম যে আমি আমার জেডিবিআইতে "ম্যানুয়ালি" লেনদেন করছিলাম, অর্থাৎ আমি আমার বক্তব্যগুলিকে বিগইন দিয়ে ঘিরে রেখেছি; ... কমিট; এবং এটি অপরাধী হতে দেখা যাচ্ছে!

জেডিবিআই ভি 2-তে আমি কেবলমাত্র @ লেনদেন টীকা যুক্ত করতে পারি, এবং @ এসকিউএলকিউরি বা @ এসকিউএলপিডেটের মধ্যে থাকা বিবৃতিগুলি লেনদেন হিসাবে কার্যকর করা হবে, এবং উপরোক্ত সমস্যাটি আর ঘটবে না!


0

আমার ক্ষেত্রে আমি এই ত্রুটিটি পেয়েছিলাম কারণ আমার ফাইলটি দূষিত ছিল। ফাইলগুলির রেকর্ড পুনরুক্তি করার সময় এটি আমাকে একই ত্রুটি দিচ্ছিল।

ভবিষ্যতে এটি যে কারও পক্ষে সহায়তা করবে। এই উত্তরটি পোস্ট করার একমাত্র কারণ।


0

আমি @Transactionalটীকা সহ বসন্ত ব্যবহার করি এবং আমি ব্যতিক্রমটি ধরি এবং কিছু ব্যতিক্রমের জন্য আমি আবার তিনবার চেষ্টা করব।

Posgresql এর জন্য, ব্যতিক্রম পেলে, আর কোনও প্রতিশ্রুতিবদ্ধতার জন্য আপনি একই সংযোগটি ব্যবহার করতে পারবেন না You আপনাকে অবশ্যই প্রথমে রোলব্যাক করতে হবে।

আমার ক্ষেত্রে, আমি DatasourceUtilsবর্তমান সংযোগ পেতে এবং connection.rollback()ম্যানুয়ালি কল করতে ব্যবহার করি। এবং কলটি পুনরায় চেষ্টা করার জন্য পদ্ধতিটি রিক্রুভ করে।


0

আমি স্প্রিং বুট জেপিএর সাথে কাজ করছিলাম এবং @Eableable TransferencesManagement প্রয়োগ করে ঠিক করেছিলাম

সংযুক্ত ফাইল আপনাকে সাহায্য করতে পারে।এখানে চিত্র বর্ণনা লিখুন


0

আমি স্প্রিং বুট জেপিএর সাথে কাজ করছিলাম এবং @Eableable TransferencesManagement প্রয়োগ করে ঠিক করেছিলাম

সংযুক্ত ফাইল আপনাকে সাহায্য করতে পারে।


0

এটা চেষ্টা কর COMMIT;

আমি pgadmin4 এ চালান। এটি সাহায্য করতে পারে। এটি পূর্ববর্তী কমান্ড অকাল বন্ধ হওয়া নিয়ে করা উচিত


-1

পুনরাবৃত্তযোগ্য পাঠ্য থেকে প্রতিশ্রুতিবদ্ধ পড়া থেকে বিচ্ছিন্নতা স্তর পরিবর্তন করুন।


-1

কান.সেটআউটো কমিট (মিথ্যা) সেট করুন সেট.আউটআউটকমিট (সত্য)

নতুনটি শুরু করার আগে লেনদেনের প্রতিশ্রুতি দিন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.