GPDB current transaction is aborted,gpdbaborted

來源:互聯網
上載者:User

GPDB current transaction is aborted,gpdbaborted

在用Python操作GPDB的時候遇到報錯如下

gpmg.manager_tabl1eerror 'ERROR:  relation "gpmg.manager_tabl1e" does not exist' in 'select pg_total_relation_size('gpmg.manager_tabl1e');'gpmg.manager_tableerror 'ERROR:  current transaction is aborted, commands ignored until end of transaction block' in 'select pg_total_relation_size('gpmg.manager_table');'

這個在一個迴圈當中,收集對象大小並插入結果表,出現這個錯誤的原因是因為在GPDB中如果有出現任何錯誤,將導致後續的會話報錯。

Python代碼塊如下

sql = "select v1,v2,v3 from test order by 2"cur.execute(sql)for ret in cur.fetchall():    v_schemaname = ret[0]    v_tablename = ret[1]    v_tableowner = ret[2]    v_object = v_schemaname + "." + v_tablename    try:        cur.execute("select pg_total_relation_size('" + v_object + "');")        v_totalsize = cur.fetchone()[0]        cur.execute("insert into gpmg.table_size_info (ctime,schemaname,tablename,tableowner,totalsize) values(%s,%s,%s,%s,%s)", (ctime,v_schemaname,v_tablename,v_tableowner,v_totalsize))    except Exception, e:        print v_object        print e

改進之後如下

try:    for ret in cur.fetchall():        v_schemaname = ret[0]        v_tablename = ret[1]        v_tableowner = ret[2]        v_object = v_schemaname + "." + v_tablename        try:            cur.execute("select pg_total_relation_size('" + v_object + "');")            v_totalsize = cur.fetchone()[0]            cur.execute("insert into gpmg.table_size_info (ctime,schemaname,tablename,tableowner,totalsize) values(%s,%s,%s,%s,%s)", (ctime,v_schemaname,v_tablename,v_tableowner,v_totalsize))            db.commit()        except Exception, e:            db.commit()            print v_object, '--', e            continueexcept Exception, e:    pass    finally:    db.commit()    db.close()    os.system('rm -rf ' + pf)

這樣就算比較完美咯。

-EOF-

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.