nish / db-migration
简单的数据库迁移工具
v0.9.3
2019-07-11 02:12 UTC
Requires
- php: >=5.4.0
This package is auto-updated.
Last update: 2024-09-06 16:15:11 UTC
README
简单的数据库迁移工具
适用于 PostgreSQL 的数据库迁移工具。
通过 sh1 文件哈希进行版本管理,类似于 git。
安装
composer require nish/db-migration vendor/bin/db-migration.php -h mkdir db-migration
迁移文件
db-migration/001_Foo.php
<?php class Foo implements DbMigration { public function up(PDO $pdo) { $pdo->exec(' create table foo( foo_id serial primary key, name text not null, body text ) '); } public function down(PDO $pdo) { $pdo->exec('drop table foo'); } }
设置 dsn
export PDO_DSN='pgsql:host=localhost;dbname=mydb;user=myuser;password=secret'
运行命令
vendor/bin/db-migration.php upgrade: 3b1243 001_Foo.php Foo Migrate? [y/n]: y up : 3b1243736a19b730845aaf8521336e3bbce12122 .ok Success!!
自动扫描文件更改
更改 001_Foo.php
<?php class Foo implements DbMigration { public function up(PDO $pdo) { $pdo->exec(' create table foo( foo_id serial primary key, name text not null, body text, created_at timestamp not null default CURRENT_TIMESTAMP ) '); } public function down(PDO $pdo) { $pdo->exec('drop table foo'); } }
运行命令
vendor/bin/db-migration.php --dry-run --down --dev Donwgrade: 3b1243 001_Foo.php Foo 2018-10-25 18:33:56 upgrade: 9e4e3b 001_Foo.php Foo Migrate? [y/n]: y down: 3b1243736a19b730845aaf8521336e3bbce12122 .ok up : 9e4e3bb05f5e7de76f9971b1cc6afaa4b5ca6687 ...ok Success!!
--dry-run: 回滚事务
--down: 允许降级
--dev: 运行升级 -> 降级 -> 升级
和
vendor/bin/db-migration.php --down Donwgrade: 3b1243 001_Foo.php Foo 2018-10-25 18:33:56 upgrade: 9e4e3b 001_Foo.php Foo Migrate? [y/n]: y down: 3b1243736a19b730845aaf8521336e3bbce12122 .ok up : 9e4e3bb05f5e7de76f9971b1cc6afaa4b5ca6687 .ok Success!!
注意:使用 git 命令显示文件
git commit
git cat-file -p 3b12437
通过任何文件进行迁移
此工具扫描 db-migration 目录中的所有 PHP 文件。
db-migration/
├── 001-Initialize
│ ├── Account.php
│ └── Item.php
├── 002-Setup
│ ├── AccountSetup.php
│ └── FooSetup.php
└── 010-AddFeature1
├── AccountFeature1.php
└── ItemFeature1.php
扫描顺序基于文件系统。
降级顺序基于时间戳。