diontruter / migrate
简单的迁移工具
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'
];