GPDBcurrenttransactionisaborted

Jun 07, 2016 pm 04:12 PM

在用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, co

在用Python操作GPDB的时候遇到报错如下

1

2

3

4

5

6

gpmg.manager_tabl1e

error 'ERROR:  relation "gpmg.manager_tabl1e" does not exist

' in 'select pg_total_relation_size('gpmg.manager_tabl1e');'

gpmg.manager_table

error 'ERROR:  current transaction is aborted, commands ignored until end of transaction block

' in 'select pg_total_relation_size('gpmg.manager_table');'

ログイン後にコピー

这个在一个循环当中,收集对象大小并插入结果表,出现这个错误的原因是因为在GPDB中如果有出现任何错误,将导致后续的会话报错。

Python代码块如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

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_ta

bleowner,v_totalsize))

    except Exception, e:

        print v_object

        print e

ログイン後にコピー

改进之后如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

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

            continue

except Exception, e:

    pass   

finally:

    db.commit()

    db.close()

    os.system('rm -rf ' + pf)

ログイン後にコピー

这样就算比较完美咯。

-EOF-

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

DockerでのMySQLメモリの使用を減らします DockerでのMySQLメモリの使用を減らします Mar 04, 2025 pm 03:52 PM

DockerでのMySQLメモリの使用を減らします

Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか? Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか? Mar 19, 2025 pm 03:51 PM

Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか?

mysqlの問題を解決する方法共有ライブラリを開くことができません mysqlの問題を解決する方法共有ライブラリを開くことができません Mar 04, 2025 pm 04:01 PM

mysqlの問題を解決する方法共有ライブラリを開くことができません

Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし) Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし) Mar 04, 2025 pm 03:54 PM

Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし)

sqliteとは何ですか?包括的な概要 sqliteとは何ですか?包括的な概要 Mar 04, 2025 pm 03:55 PM

sqliteとは何ですか?包括的な概要

MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド Mar 04, 2025 pm 03:49 PM

MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド

人気のあるMySQL GUIツール(MySQL Workbench、PhpMyAdminなど)は何ですか? 人気のあるMySQL GUIツール(MySQL Workbench、PhpMyAdminなど)は何ですか? Mar 21, 2025 pm 06:28 PM

人気のあるMySQL GUIツール(MySQL Workbench、PhpMyAdminなど)は何ですか?

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか? MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか? Mar 18, 2025 pm 12:01 PM

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか?

See all articles