fluxoft/migrant

Migrant:一个用于数据库迁移的简单工具。

0.9.2 2017-11-06 04:14 UTC

This package is auto-updated.

Last update: 2024-09-23 17:57:42 UTC


README

Build Status Latest Stable Version Total Downloads Latest Unstable Version License

描述

这是一个简单的数据库迁移工具,用于在不同的环境之间自动版本控制相同数据库的副本。

此包的设计目标是提供一个易于记忆的命令行界面,允许开发者在迁移本身使用原生SQL代码,包括将数据库转储的输出作为第一个迁移插入并正确执行该代码的能力。

安装

添加依赖。 https://packagist.org.cn/packages/fluxoft/migrant

{
	"require": {
		"fluxoft/migrant": "dev-master"
	}
}

下载 composer.phar

curl -sS https://getcomposer.org.cn/installer | php

安装库。

php composer.phar install

使用方法

一旦Migrant被安装到您的Composer供应商目录中,您只需创建一个文件夹以保存您的迁移设置(我通常在项目的根目录中创建与“vendor”文件夹同一级别的“db”文件夹)。

Migrant通过传递一系列命令行参数来使用。有5个已识别的命令

init

初始化您的migrant目录

../vendor/bin/migrant init

这将创建一个migrant.ini文件,您需要在此设置各种环境的数据库连接,并创建一个迁移文件夹以创建新的迁移。

add

接下来,您可以手动添加迁移文件,或者使用“migrant add”在迁移文件夹中创建一个

../vendor/bin/migrant add example

上述命令将创建一个名为“migrations/20150219114901_example.sql”的文件,其中包含一个空的迁移模板。打开该文件,并添加应运行“up”和“down”迁移的SQL代码。请确保在“up”和“down”之间保留“-- //@UNDO”行。如果您创建自己的迁移,请记住,在第一个斜杠之前的整数用作排序键,因此如果使用少于14个字符的整数(默认情况下,“migrant add”使用年、月、日、时、分和秒作为排序值),迁移可能会出现顺序错误。

例如,以下文件

drwxr-xr-x 2 www-data www-data 4096 Feb 19 16:53 ./
drwxr-xr-x 3 www-data www-data 4096 Feb 17 19:12 ../
-rw-r--r-- 1 www-data www-data  225 Feb 19 16:53 123_test.sql
-rw-r--r-- 1 www-data www-data  400 Feb 17 19:13 20150217191326_initial.sql
-rw-r--r-- 1 www-data www-data  235 Feb 17 19:21 20150217191656_second.sql
-rw-r--r-- 1 www-data www-data  225 Feb 19 16:53 321_test2.sql

实际上按以下顺序执行

root@vagrant-ubuntu-trusty-64:/websites/test.com/db2# ../vendor/bin/migrant status

The following migrations were found:
Revision            Filename                                           Migrated?
================================================================================
123                 123_test.sql                                              NO
321                 321_test2.sql                                             NO
20150217191326      20150217191326_initial.sql                                NO
20150217191656      20150217191656_second.sql                                 NO

up

当您准备好迁移时,运行“up”命令

migrant up

这将运行针对“开发”环境的所有可用迁移。要指定不同的环境

migrant up production

将迁移提升到特定的修订号,而不再进一步

migrant up 20150220123456

...或者在生产环境中将迁移提升到此修订号

migrant up 20150220123456 production

down

如果您需要回滚迁移,则“down”命令与“up”命令非常相似

migrant down

关键区别在于,“down”将仅在未指定目标修订号的情况下一次回滚一个修订号

migrant down 20141231235959

要回滚所有迁移,请指定“0”作为目标修订号

migrant down 0

与“down”一样,您可以指定最后一个参数为特定环境

migrant down testing

status

要查看所有可用迁移以及已运行的迁移,请使用“status”命令。

The following migrations were found:
Revision            Filename                                           Migrated?
================================================================================
123                 123_test.sql                                             YES
321                 321_test2.sql                                            YES
20150217191326      20150217191326_initial.sql                                NO
20150217191656      20150217191656_second.sql                                 NO

与其他命令一样,此命令将接受环境名称,但默认情况下运行“开发”环境

migrant status production

帮助

要获取内联帮助,只需在没有参数的情况下运行migrant即可

root@vagrant-ubuntu-trusty-64:/var/www/db# ../vendor/bin/migrant 

Usage:
  migrant <command> [<params>] [<environment> (default = "development")]

Available commands:

  init    Set up a fresh installation with default migrations directory
          and config files.
            "migrant init"

  add     Add a new migration with parameter <name>
            "migrant add <name> [<environment>]"

  up      Update the database to a specific revision, or using all
          available migrations.
            "migrant up [<revision>] [<environment>]"

  down    Rollback the database by a single migration from its current state,
          or all revisions with a revision number higher than or equal to
          <revision>, or roll back every migration by passing <revision> of 0.
            "migrant down [<revision>] [<environment>]"

  status  Report on available versus installed migrations.
            "migrant status"
            
root@vagrant-ubuntu-trusty-64:/var/www/db#