rake db:回滚/迁移

本文详细介绍了Rails中用于数据库迁移的各种命令,包括向前迁移、撤销迁移、重做迁移等操作的具体用法,并提供了如何查看迁移版本及如何进行特定版本迁移的方法。

 

rake db:migrate

命令作用:将所有未实施的迁移任务都实施到目标数据库上。

 

rake db:migrate VERSION=20080906120000

命令作用:撤销迁移任务到指定版本

迁移版本信息可以在所创建库(如elvuel_deployment数据库)下schema_info表中查看到相关记录信息。

 

rake db:migrate VERSION=0

命令作用:将数据库返回到最初状态(即,只有schema_migrations表,其他表都删除)

 

rake db:migrateVERBOSE=false  

命令作用:屏蔽migration的输出  

 

rake db:rollback

命令作用:回滚到最近的一次migration执行的状态  

 

rake db:rollback STEP=3  

命令作用:回滚最近的3次的迁移任务

 

rake db:migrate:redo

命令作用:重做迁移

 

rake db:migrate:redo STEP=3

重新执行前三次 migration

 

bundle exec rake db:migrate RAILS_ENV=production == 20150113213955 AddEmailAddressesUserIdIndex: migrating ===================== -- add_index(:email_addresses, :user_id) rake aborted! StandardError: An error has occurred, all later migrations canceled: Mysql2::Error: Duplicate key name 'index_email_addresses_on_user_id' /usr/local/rvm/gems/ruby-3.1.0/gems/mysql2-0.5.6/lib/mysql2/client.rb:151:in `_query' /usr/local/rvm/gems/ruby-3.1.0/gems/mysql2-0.5.6/lib/mysql2/client.rb:151:in `block in query' /usr/local/rvm/gems/ruby-3.1.0/gems/mysql2-0.5.6/lib/mysql2/client.rb:150:in `handle_interrupt' /usr/local/rvm/gems/ruby-3.1.0/gems/mysql2-0.5.6/lib/mysql2/client.rb:150:in `query' /usr/local/rvm/gems/ruby-3.1.0/gems/activerecord-6.1.7.8/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:206:in `block (2 levels) in execute' /usr/local/rvm/gems/ruby-3.1.0/gems/activesupport-6.1.7.8/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads' /usr/local/rvm/gems/ruby-3.1.0/gems/activesupport-6.1.7.8/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares' /usr/local/rvm/gems/ruby-3.1.0/gems/activesupport-6.1.7.8/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads' /usr/local/rvm/gems/ruby-3.1.0/gems/activerecord-6.1.7.8/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:205:in `block in execute' /usr/local/rvm/gems/ruby-3.1.0/gems/activerecord-6.1.7.8/lib/active_record/connection_adapters/abstract_adapter.rb:696:in `block (2 levels) in log' /usr/local/rvm/gems/ruby-3.1.0/gems/activesupport-6.1.7.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize' /usr/local/rvm/gems/ruby-3.1.0/gems/activesupport-6.1.7.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handl如何解决?
最新发布
08-22
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值