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

时间:2018-07-20 12:49:57

标签: django postgresql google-cloud-platform google-cloud-sql

我们在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服务对settings有一些限制。我不能设置标志。

我该如何解决?

2 个答案:

答案 0 :(得分:2)

如果“ Google SQL”允许,您可以将max_standby_streaming_delay设置为-1,以便在检测到冲突时延迟复制。

然后将不会取​​消查询,但是如果应用更改会导致冲突,则复制可能会滞后。

考虑获取“不受约束的” PostgreSQL。

答案 1 :(得分:2)

如果您要设置hot_standby_feedback = on,建议您对Google Cloud Platform feature request工具上的开放Public Issue Tracker感兴趣。这样,某人可以调查您的Cloud SQL PostgreSQL实例遇到的handling query conflict问题。

我还一直在监视Issue Tracker中的开放线程,以使用户可以设置max_standby_archive_delaymax_standby_streaming_delay标志。您也可以在那里跟踪它。希望这会有所帮助!