nish/db-migration

简单的数据库迁移工具

v0.9.3 2019-07-11 02:12 UTC

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

扫描顺序基于文件系统。
降级顺序基于时间戳。