欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Rails项目数据库迁移

程序员文章站 2022-07-12 23:52:03
...

背景

本人有个Rails小项目,原来使用的是Sqlite ,现在想将数据库变更为 Mysql
由于项目已经正常运营一段时间,Sqlite 数据库内已经有很多数据,这些数据也要重新添加到 Mysql 中

操作步骤

1.安装工具 YamlDb

在 Gemfile 中添加 gem 'yaml_db' 然后 bundle instal

2.导出数据

执行命令 rake db:dump RAILS_ENV=production
成功执行后,会在 db/ 目录下创建 data.yml 文件,文件内有 Sqlite 中的数据

3.修改数据库配置文件 config/database.yml

修改前为Sqlite

default: &default
  adapter: sqlite3
  pool: 5
  timeout: 20000
production:
  <<: *default
  database: db/production.sqlite3

修改后为Mysql

default: &default
  adapter: mysql2
  pool: 5
  timeout: 20000
  host: mysql
  port: 3306
  username: root
  password: root
  reconnect: true
  charset: utf8
production:
  <<: *default
  database: sprint_util_production

4.创建数据库服务

这里不赘述,自己自行配置Mysql
需要注意,host port username password 需要与配置文件一样

5.在Mysql中创建对应的数据库

执行命令 rake db:create RAILS_ENV=production
执行完成后去Mysql中验证下是否创建了指定的数据库

6.在Mysql数据库中创建对应的表结构

执行命令 rake db:schema:load RAILS_ENV=production
执行完成后去Mysql中验证下是否创建了指定的表rar

7.将db/data.yml中的数据导入到Mysql

执行命令 rake db:load RAILS_ENV=production
生产环境有数据保护,会执行失败,根据失败的提示添加一个环境变量就可以了
成功后去Mysql中去查看验证,数据已经导入了