我们在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有一些限制。我不能设置标志。
我该如何解决?
答案 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_delay
和max_standby_streaming_delay
标志。您也可以在那里跟踪它。希望这会有所帮助!