Rails项目数据库迁移

背景

本人有个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中去查看验证,数据已经导入了

你可能感兴趣的:(数据库,服务端,Rails)