php方案 PHP的数据库Schema版本管理
用 https://github.com/cakephp/phinx框架无关最常用。composerrequirerobmorgan/phinx 配置// phinx.php放项目根目录return[paths[migrationsdb/migrations],environments[default_environmentdev,dev[adaptermysql,hostlocalhost,namemydb,userroot,pass,],prod[adaptermysql,hostgetenv(DB_HOST),namegetenv(DB_NAME),usergetenv(DB_USER),passgetenv(DB_PASS),],],];创建迁移文件 vendor/bin/phinx create CreateUsersTable# 生成 db/migrations/20240319120000_create_users_table.php写迁移?phpusePhinx\Migration\AbstractMigration;classCreateUsersTableextendsAbstractMigration{publicfunctionup():void{$this-table(users)-addColumn(name,string,[limit100])-addColumn(email,string,[limit100])-addColumn(created_at,datetime)-addIndex(email,[uniquetrue])-create();}publicfunctiondown():void{$this-table(users)-drop()-save();}}常用命令 vendor/bin/phinx status# 看哪些迁移跑了、哪些没跑vendor/bin/phinx migrate# 跑所有未执行的迁移vendor/bin/phinx migrate-e prod# 指定环境vendor/bin/phinx rollback# 回滚最后一次vendor/bin/phinx rollback-t0# 回滚到初始状态vendor/bin/phinx migrate-t20240319120000# 迁移到指定版本改表结构加列/改列publicfunctionup():void{$this-table(users)-addColumn(phone,string,[afteremail,nulltrue])-changeColumn(name,string,[limit200])// 改长度-removeColumn(old_field)-save();}CI里自动跑# .github/workflows/deploy.yml-run:vendor/bin/phinx migrate-e prod---Phinx 在数据库里建一张 phinxlog 表记录哪些迁移跑过了文件名前面的时间戳就是版本号。up()往前走down()往回退status 随时看当前在哪个版本。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2428064.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!