一、背景
公司某个项目项目版本迭代较快,每次版本更新时都是执行SQL文件,久而久之暴露了诸多问题。常见问题有:1;数据库更新未成功但是并不知晓2;数据库版本回滚复杂(回滚困难)
二、使用Migration
2.1版本升级
[root@xunce-beta-web tmp]# /usr/local/php7/bin/php xc_sql_version_3.48.0.phar.gz 3.48.0
2.2发现报错
报错信息:
Migration 20201125000348 failed during Execution. Error An exception occurred while executing 'update gmf_bms.fund_fee_receivable_fixed set `key` = 'fee_payable_collect_condition_val6' where `key` = 'fee_payable_collect_condition_val5';':
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'key' in 'where clause'
原因:开发写错了sql语句,这在版本迭代过程中属于常发生的事情
2.3回滚至上个SQL版本
[root@xunce-beta-web tmp]# /usr/local/php7/bin/php xc_sql_version_3.48.0.phar.gz 3.47.6_1
备注:回滚至上个版本的话注意要导出表的数据,不过我们是beta环境无所谓,严格使用数据库模板并在beta环境进行验证的话,生产环境回滚可能性很小。如果生产环境必须回滚则需要考虑对表数据的备份。
2.4再次升级数据库
[root@xunce-beta-web tmp]# /usr/local/php7/bin/php xc_sql_version_3.48.0.phar.gz 3.48.0
三、总结
之所以写这篇文档是因为公司还有很多项目,有时候实在是被搞得焦头烂额。运维往这方向去推收效甚微。哎
留言