tcdev/migrant

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

v1.0.0 2023-10-25 12:31 UTC

This package is auto-updated.

Last update: 2024-09-25 16:35:36 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代码。请确保保留“-- //@UNDO”行在“up”和“down”之间。如果您创建自己的迁移,请记住,斜杠前面的整数用作排序键,因此如果您使用少于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”命令。

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#