[Rails] rollback migration version

遇到 migration 進退兩難

在 localhost 或者 staging 已经部属完 migration
而當前处在错误的版本,爾後又继续建立 migrate file,中間存在很多的 migration versions
导致最後沒辦法前進 rake db:migrate ,也沒辦法後退 rollback:migrate

WTF my mgrations

解决前提:

本地数据或者远端 staging 数据记录都可以舍弃下,登入 postgres

解决方法,三步骤

1
2
psql -l // 确认哪一个 database name
psql {your_database_name}

第一,先删除该 table 或者 column

假設你遇到輸入指令没回,檢查指令结尾是否忘記加上 ;

1
2
3
4
5
6
//如果只是改栏位,删除该 column即可
alter table {table_name复数} drop column {table_column};
//移除 table
drop table {table_name复数};
//举例:
drop table users;

第二,再移除该版本号

1
2
3
4
select from schema_migrations where version='20190318034745';
row(1) //代表有找到该版本
delete from schema_migrations where version='20190318034745';
DELETE 1 //代表已经删除了

第三,检查 rake db:migrate:status 确认都是 up,就可以执行 rake db:migrate

补充可以在 postgres console 里面输出,當前 schema_migrations 的版本
使用以下指令:

1
select * from schema_migrations order by version  desc limit 10;

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×