gpt4 book ai didi

ruby-on-rails - Rails add_index 算法 : :concurrently still causes database lock up during migration

转载 作者:数据小太阳 更新时间:2023-10-29 07:07:43 24 4
gpt4 key购买 nike

为了防止在迁移到生产站点期间出现数据库事务错误,我们遵循了 https://github.com/LendingHome/zero_downtime_migrations 中列出的建议。 (具体由 https://robots.thoughtbot.com/how-to-create-postgres-indexes-concurrently-in 概述),但在特别大的表上创建索引期间,即使是索引创建的“并发”方法也会锁定表并导致该表上的任何 ActiveRecord 创建或更新导致各自的事务失败有 PG::InFailedSqlTransaction 异常。

下面是我们运行 Rails 4.2(使用 ActiveRecord 4.2.7.1)的迁移:

class AddTypeIndexToModel < ActiveRecord::Migration
disable_ddl_transaction!

def change
add_index :model, :model_type_id, algorithm: :concurrently
end
end

最佳答案

事实证明,该问题与该迁移无关,而与之前在同一批处理中运行的迁移有关,该迁移正在向同一个表添加新列。

因为我们在表中添加了一列,所以我们在 Active Record 中遇到了这个错误 https://github.com/rails/rails/issues/12330这实质上会导致事务中的所有 ActiveRecord 操作因陈旧的 PreparedStatement 而失败,直到服务器重新启动。

从现在开始,我们将在迁移中使用该问题中描述的解决方法。

关于ruby-on-rails - Rails add_index 算法 : :concurrently still causes database lock up during migration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46797811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com