Rails数据库迁移

来源:互联网 发布:生化危机6盗版端口 编辑:程序博客网 时间:2024/06/05 19:28

Rails数据库迁移基本操作

目录

  • 1安装ruby
  • 2安装mysql
  • 3安装migrations
  • 4添加Rakefile文件,并加入内容
  • 5添加数据库配置(在db目录下的config.yml文件中)
    • 5.1手动创建数据库
    • 5.2配置config.yml
  • 6创建数据库迁移
  • 7编辑生成的XXXXXX.rb 文件:
    • 7.1创建表
    • 7.2支持的数据类型
    • 7.3表的操作
      • 7.3.1创建表
      • 7.3.2删除表(表名)
      • 7.3.3重命名表(旧表名,新表名)
      • 7.3.4增加列(表名,列名,列类型,属性)
      • 7.3.5移除列(表名,列名)
      • 7.3.6重命名列(表名,旧列名,新列名)
      • 7.3.7修改列(表名,列名,列类型,属性)
      • 7.3.8增加索引(表名,列名,属性)
      • 7.3.9移除索引(表名,列名)
  • 8执行迁移
  • 9回滚
  • 10搭建数据库
  • 11重建数据库

 安装ruby

apt-get install ruby-dev

安装mysql

apt-get install libmysqlclient-dev gem install mysqlapt-get install mysql-server 

 安装migrations

gem install standalone_migrations

添加Rakefile文件,并加入内容

touch Rakefile vi Rakefile require 'standalone_migrations'StandaloneMigrations::Tasks.load_tasks

添加数据库配置(在db目录下的config.yml文件中)

通过rake -T列出可以执行的所有rake任务

手动创建数据库

mysql -uroot -pchina-opscreate databases ecloud_financial;

或者编辑好config.yml后执行rake db:create

rake db:create

完成创建database操作

配置config.yml

mkdir dbtocuh config.yml
development: adapter: mysql encoding: utf8 reconnect: false database: ecloud_financial pool: 5 username: root password: china-ops socket: /var/run/mysqld/mysqld.sockproduction: adapter: mysql encoding: utf8 reconnect: false database: somedatabase_dev pool: 5 username: root password: socket: /var/run/mysqld/mysqld.socktest: &test adapter: sqlite3 database: db/test.sqlite3 pool: 5 timeout: 5000

 创建数据库迁移

rake db:new_migration name=test_create_table

编辑生成的XXXXXX.rb 文件:

创建表

class TestCreateTables < ActiveRecord::Migration def change  create_table :test_tables do |t|    t.string :name    t.column :is_active, :integer, default: 0    t.column :status, :boolean, default: true    t.integer:code    t.string :limitation   end endend

执行迁移时如果表存在删除后再执行创建用:force: true创建表执行:rake db:setup

class TestCreateTables < ActiveRecord::Migration def change  create_table :test_tables ,force: true do |t|    t.string :name    t.column :is_active, :integer, default: 0    t.column :status, :boolean, default: true    t.integer:code    t.string :limitation   end endend

支持的数据类型

Active Record 支持的数据类型包括:

   :binary   :boolean   :date   :datetime   :decimal   :float   :integer   :primary_key   :string   :text   :time   :timestamp

 表的操作

 创建表

create_table(table,options) do |t|...columns...end

 删除表(表名)

drop_table(table)

重命名表(旧表名,新表名)

rename_table(table,new_name)

增加列(表名,列名,列类型,属性)

add_column(table,column,type,options)

移除列(表名,列名)

remove_column(table,column)

重命名列(表名,旧列名,新列名)

rename_column(table,column,new_name)

修改列(表名,列名,列类型,属性)

change_column(table,column,type,options)

增加索引(表名,列名,属性)

add_index(table,column,options)

移除索引(表名,列名)

remove_index(table,column)

 执行迁移

rake db:migrate

回滚

rake db:rollback

这个命令会回滚上一次迁移,撤销 change 方法中的操作,或者执行 down 方法。如果想撤销多个迁移,可以使用 STEP 参数:

rake db:rollback STEP=3

这个命令会撤销前三次迁移。db:migrate:redo 命令可以回滚上一次迁移,然后再次执行迁移。和 db:rollback 一样,如果想重做多次迁移,可以使用 STEP 参数

rake db:migrate:redo STEP=3

搭建数据库

rake db:setup 任务会创建数据库,加载模式,并填充种子数据。

 重建数据库

rake db:reset 任务会删除数据库,然后重建,等价于 rake db:drop db:setup。

0 0