使用Trino连接PostgreSQL RDS写入时遇Autocommit支持错误求助
解决Trino连接PostgreSQL写入时的AUTOCOMMIT_WRITE_CONFLICT错误
问题原因
Trino的PostgreSQL连接器仅支持在自动提交(autocommit)模式下执行写入操作,你的代码显式设置了IsolationLevel.SERIALIZABLE,这会开启显式事务,违反了连接器的限制,从而触发AUTOCOMMIT_WRITE_CONFLICT错误。
解决方案
修改Python代码,将事务隔离级别设置为自动提交模式,或者直接移除isolation_level参数(默认即为自动提交):
修改后的代码
from trino.dbapi import connect from trino.auth import BasicAuthentication from trino.transaction import IsolationLevel with connect( host="localhost", port=8080, user="username", auth=BasicAuthentication("username", "password"), http_scheme="https", isolation_level=IsolationLevel.AUTOCOMMIT, # 显式指定自动提交,也可直接删除该行 verify=False, catalog="my_catalog_name" ) as conn: cur = conn.cursor() cur.execute('INSERT INTO sometable VALUES (4, 5, 6)')
补充说明
- 若业务需要事务支持,Trino的PostgreSQL连接器目前不提供该能力,可直接连接PostgreSQL执行事务操作,或更换其他支持事务写入的Trino连接器。
- 你的catalog配置无需调整,当前PostgreSQL连接器的配置是正确的,问题仅出在客户端的事务隔离级别设置上。
内容的提问来源于stack exchange,提问作者Santhoshkumar R
相关产品推荐
相关产品推荐

