Ruby 关于 Rails 从 sqlite3 到 mysql 关于多对多关系的数据迁移

Ruby On Rails data migration from sqlite3 to mysql regarding to many to many relations

我的 rails 应用程序中有一个 sqlite3 数据库,其中有一个 development.sqlite3 文件。我想将数据库转换为 mysql。这是我采取的步骤,但我仍然遇到问题:

1.First 我添加并安装 gem 'seed_dump' 以将数据添加到我的 seed.rb(通过 运行 rake db:seed:dump)因为我真的需要迁移我的数据 .

2.Change 将 database.yml 配置为 mysql 设置。

development:
  adapter: mysql2
  encoding: utf8
  database: MyDB
  username: root
  password: ****
production:
  adapter: mysql2
  encoding: utf8
  database: MyDB
  username: root
  password: ****

3.Run rails db:create 然后 rails db:schema:load.

4.Then 通过 运行 rake db:seed:dump

从种子加载数据

问题是我的多对多关系数据(在数据库模式中有一个 table)无法从我的 seed.rb.[=29= 导入 mysql ]

我想知道的是,有没有其他安全的方法可以将我的数据从 sqlite3 迁移到 mysql,而不是将它们写入 seed.rb 然后读取它们?

在寻找另一种解决问题的方法时,我发现了声明的内容 here。我按照 mysql 的另一个错误的步骤操作: Data is too long for column summary 。为了跳过这个错误,我在 database.yml:

中像这样关闭了 mysql strict mode

config/database.yml

development:
  adapter: mysql2
  encoding: utf8
  database: myDB
  username: root
  password: ****
  host: localhost
  strict: false


production:
  adapter: mysql2
  encoding: utf8
  database: myDB
  username: root
  password: **** 
  host: localhost
  strict: false

这个解决方案比使用 gem 'seed_dump' 更清晰,后者与 has and belongs to many 关系有问题!