Rails数据库迁移

Rails数据库迁移基本操作

目录

 安装ruby

apt-get install ruby-dev

安装mysql

apt-get install libmysqlclient-dev 
gem install mysql
apt-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-ops
create databases ecloud_financial;

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

rake db:create

完成创建database操作

配置config.yml

mkdir db
tocuh config.yml
development:
 adapter: mysql
 encoding: utf8
 reconnect: false
 database: ecloud_financial
 pool: 5
 username: root
 password: china-ops
 socket: /var/run/mysqld/mysqld.sock
production:
 adapter: mysql
 encoding: utf8
 reconnect: false
 database: somedatabase_dev
 pool: 5
 username: root
 password:
 socket: /var/run/mysqld/mysqld.sock
test: &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
 end
end

执行迁移时如果表存在删除后再执行创建用: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
 end
end

支持的数据类型

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值