diontruter/migrate

简单的迁移工具

安装: 30

依赖项: 0

建议者: 0

安全: 0

星星: 1

关注者: 2

分支: 0

开放问题: 0

类型:项目

v1.2 2017-06-16 18:14 UTC

This package is not auto-updated.

Last update: 2024-09-29 01:51:18 UTC


README

简单的SQL迁移工具

SimpleMigration是包含迁移函数的主要类。可以通过以下方式在命令行模式下调用:

  • SimpleMigration::processCommandLine($argv)

或者也可以单独使用函数

  • SimpleMigration::migrate($up = true)
  • SimpleMigration::status()

向上迁移将处理尚未处理的所有迁移文件,而向下迁移将仅运行最新迁移的向下迁移脚本。

迁移脚本必须采用以下格式: '<id>-<u|d>[description].sql' 有效示例

  • 123-up-2017-01-01-new-year-fix.sql
  • 123-down-2017-01-01-reverse-new-year-fix.sql
  • 123-U.sql
  • 123-d.sql
  • 00123-upwards-migration.sql
  • 00123-downwards-migration.sql

迁移通过文件名的ID部分进行跟踪,并按向上和向下迁移对分组。向下迁移文件是可选的;如果没有为最新的向上迁移提供向下迁移,则尝试向下迁移时将发生错误。

将读取迁移脚本目录中的所有文件,且忽略没有.sql扩展名的文件。迁移按其ID前缀排序,并根据其ID依次运行。

迁移脚本可以包含任意由分号分隔的SQL语句。SqlScriptParser类用于将SQL语句分开,以便通过PDO发送。它可以处理分号、单行注释、多行注释和引号字符串之间的优先级。给定脚本中的所有SQL语句都在单个数据库事务中运行,以确保完整性。

此应用程序使用经过MySQL和PostgreSQL测试的非常基本的SQL。它应该适用于任何基于SQL的数据库,但尚未验证。

一旦运行了迁移脚本,就可以安全地重命名,只要解析的ID部分等于第一次运行时的原始整数ID值。如果删除了向上迁移脚本或更改了ID部分,则不会产生影响,因为将来只需要向下迁移。在删除的向上迁移之后降级,未来的向上迁移将排除删除的文件。始终添加ID高于最后一个脚本ID的新迁移脚本。迁移工具将只处理ID大于已运行的最后一个迁移ID的新迁移。

此类在构造时接受一个配置路径。配置路径必须是一个返回配置数组的普通PHP文件。该数组必须具有以下结构

<?php

return [
    'basePath' => 'path-within-which-to-find-migration-scripts-directory',
    'connectionString' => 'pdo-database-connection-string',
    'userName' => 'optional-pdo-username',
    'password' => 'optional-pdo-password'
];