gpt4 book ai didi

mysql - Multi-Tenancy 系统从 MYSQL 迁移到 POSTGRES

转载 作者:行者123 更新时间:2023-11-29 20:49:50 25 4
gpt4 key购买 nike

我的应用程序的数据库位于 MYSQL 中,我正在尝试使用 Apartment Gem 实现 Multi-Tenancy 系统。 gem的要求是你必须有一个POSTGRES Db。那么我如何将现有的 MYSQL 数据库迁移到 POSTGRES。

最佳答案

我最近在我的一个项目中做到了这一点。将数据从 mysql 迁移到 pg 有点棘手。为此,您必须仔细获取所有 rails 模型 中的所有 mysql db 记录,对数据进行哈希处理,然后将其导入到 pg 中。让我们将整个过程分为以下步骤:

1- 建立到 mysql db 的连接

ActiveRecord::Base.establish_connection( :adapter => "mysql", :host => "host", :username => "username", :password => "password", :database => "db_name" )

2-从所有模型中获取 mysql 行并进行 hashify

["Model1", "Model2", "Model3", "Model4", "Model5"].each do |modal|
eval("@#{modal.downcase} = #{modal}.all.collect{ |p| p.to_dh }")
end

3-现在连接到您当前的数据库,即pg

ActiveRecord::Base.establish_connection(:development)

4- 切换到您想要导出数据的新租户

Apartment::Tenant.switch!('tenant_name')

5- 在 rails 模型 中创建记录,这些记录从哈希化 mysql 数据迁移到 pg

["Model1", "Model2", "Model3", "Model4", "Model5"].each do |modal|
eval("@#{modal.downcase}.each{ |p| #{modal}.create(p[:attributes], :without_protection => true) rescue p[:id]}")
end

6-现在您需要重置 ID,以便 Rails 可以根据前一条记录而不是 1 创建记录。

["Model1", "Model2", "Model3", "Model4", "Model5"].each do |modal|
ActiveRecord::Base.connection.reset_pk_sequence!(eval("#{modal}.table_name"))
end

给你。现在,您已将所有 mysql 数据迁移到 pg 数据库 中。

关于mysql - Multi-Tenancy 系统从 MYSQL 迁移到 POSTGRES,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38157704/

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