hhpack/migrate

Hack的轻量级迁移工具

维护者

详细信息

github.com/hhpack/migrate

源代码

问题

安装: 11

依赖项: 0

建议者: 0

安全: 0

星标: 1

关注者: 1

分支: 0

开放性问题: 1

语言:Shell

2.2.1 2019-04-20 12:29 UTC

README

CircleCI

基本用法

首先将配置文件的database.json放置在config目录下。
请参考以下设置。

  • type - 迁移类型,仅支持SQL基础
  • path - 迁移文件所在的目录。
  • enviroments - 环境的数据库连接设置。
{
  "type": "sql",
  "path": "db/migrate",
  "enviroments": {
    "development": {
      "host": "localhost",
      "port": 3306,
      "name": "migrate",
      "user": { "ENV": "DB_USERNAME" },
      "password": { "ENV": "DB_PASSWORD" }
    }
  }
}

创建数据库

您可以运行创建命令来创建数据库。

vendor/bin/migrate create

生成迁移文件

使用gen命令来生成迁移文件。

vendor/bin/migrate gen create-users

模式升级

使用up命令来升级模式。
您可以通过指定--to选项升级到特定版本。

vendor/bin/migrate up

或者

vendor/bin/migrate up --to=20150824010439-create-users

模式降级

要降级到指定版本,请使用down命令。

vendor/bin/migrate down 20150824010439-create-users

模式重置

恢复所有应用过的迁移。

vendor/bin/migrate reset

删除数据库

您可以使用以下命令删除数据库。

vendor/bin/migrate drop

迁移器

当前版本支持基于SQL的迁移。

use HHPack\Migrate\Migrator;
use HHPack\Migrate\SqlMigrationLoader;
use HHPack\Migrate\DatabaseClient;

$mysql = await DatabaseClient::createConnection('mysql:dbname=migrate;port=3306', 'migrate', 'migrate');
$loader = new SqlMigrationLoader(__DIR__ . '/sql/migrations');

$migrator = new Migrator($loader, $mysql);

await $migrator->upgrade();

模式降级

use HHPack\Migrate\Migrator;
use HHPack\Migrate\SqlMigrationLoader;
use HHPack\Migrate\DatabaseClient;

$mysql = await DatabaseClient::createConnection('mysql:dbname=migrate;port=3306', 'migrate', 'migrate');
$loader = new SqlMigrationLoader(__DIR__ . '/sql/migrations');

$migrator = new Migrator($loader, $mysql);

await $migrator->downgrade('20150825102100-create-posts');

运行测试

  1. 创建数据库

     CREATE USER 'migrate'@'localhost' IDENTIFIED BY 'migrate';
    
  2. 创建用户

     GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON migrate.* TO 'migrate'@'localhost';
    
  3. 执行单元测试

    您可以使用以下命令运行测试。

     composer install
     composer test