Rails数据库迁移基本操作

1.安装ruby

apt-get install ruby-dev


2.安装mysql

apt-get install libmysqlclient-dev

gem install mysql

apt-get install mysql-server



3.安装migrations

gem install standalone_migrations


4.添加Rakefile文件,并加入内容


touch Rakefile
vi Rakefile

require 'standalone_migrations'
StandaloneMigrations::Tasks.load_tasks


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

[b]rake -T 查看所有rake的命令[/b]

5.1.手动创建数据库

mysql -uroot -pchina-ops
create databases ecloud_financial;

在此也可以不用手动创建数据库,首先要完成config.yml的配置,然后执行
 rake db:create

rails会按照config.yml中配置的数据库名称创建数据库

5.2.配置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


6.创建数据库迁移

rake db:new_migration name=test_create_table


7.编辑生成的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)



8.执行迁移

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值