如何修复 Google SQL 上的 PostgreSQL 取消语句错误?

问题描述 投票:0回答:3

我们在 Google SQL 上有 PostgreSQL 实例(1 个主实例 + 1 个只读副本)。我们的 Django (1.11.12) 应用程序通过 PostGIS 引擎使用这些数据库。当我们尝试使用数据库时,我们看到了以下错误消息:

django.db.utils.OperationalError: canceling statement due to conflict with recovery
DETAIL:  User query might have needed to see row versions that must be removed.

当我寻找解决方案时,他们通常说我需要更改 hot_standby_feedback 标志。但如您所知,Google SQL 服务对设置有一些限制。我无法设置标志。

我该如何解决这个问题?

django postgresql google-cloud-platform google-cloud-sql
3个回答
4
投票

如果“Google SQL”允许,您可以将

max_standby_streaming_delay
设置为
-1
,以便在检测到冲突时延迟复制。

那么查询将不会被取消,但如果应用更改会导致冲突,复制可能会滞后。

考虑获得一个“不受约束的”PostgreSQL。


3
投票

如果您想设置

hot_standby_feedback = on
,我建议您表明您对 Google Cloud Platform 的 Public Issue Tracker 工具上开放的 feature request 感兴趣。这样,有人就可以调查您的 Cloud SQL PostgreSQL 实例遇到的处理查询冲突问题。

我还一直在监控 Issue Tracker 中关于使

max_standby_archive_delay
max_standby_streaming_delay
标志可供用户设置的开放线程。您也可以在那里跟踪它。希望这有帮助!


0
投票

现在支持此功能,供其他人查看:https://cloud.google.com/sql/docs/postgres/flags#list-flags-postgres

您可以通过 Postgres 实例配置中的控制台将

max_standby_streaming_delay
设置为
-1

© www.soinside.com 2019 - 2024. All rights reserved.