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

标签 mysql ruby-on-rails sqlite has-and-belongs-to-many data-migration

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

1.首先,我添加并安装 gem 'seed_dump' 将数据添加到我的 seed.rb 中(通过运行 rake db:seed:dump) 因为我确实需要迁移我的数据。

2.将database.yml配置更改为mysql设置。

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

3.运行rails db:create,然后运行rails db:schema:load

4.然后通过运行rake db:seed:dump从种子加载数据

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

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

最佳答案

当我寻找另一种方法来解决该问题时,我发现了声明的内容 here 。我按照 mysql 面临另一个错误的步骤进行操作: Data is too long for columns Summary 。为了跳过这个错误,我在database.yml中关闭了mysql严格模式:

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 和属于许多 关系的问题!

关于mysql - Ruby On Rails 关于多对多关系的数据从 sqlite3 迁移到 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50073498/

相关文章:

ruby-on-rails - 如何在 Rails 的功能测试中启用页面缓存?

sql - sqlite3中的case表达式

php - 添加子类别 - Laravel 5.2

php - mysql对查询的限制

ruby-on-rails - 找不到 cap 命令

iphone - 如何在 iPhone 的 UIWebView 中正确保存/显示换行符?

python - flask/sqlalchemy - OperationalError : (sqlite3. OperationalError) 没有这样的表

php - 包含任何数据的 MySQL Count 字段

php - 根据类别列出子类别 - 从 mysql 拉取

ruby-on-rails - 如何使用 Rails 3 和 Ruby 1.9.2 创建 Windows 服务?