soft4good / poorman-migrations
一个轻量级的独立数据库迁移管理器,支持多个环境。包含基础架构和种子数据。
Requires
- vlucas/phpdotenv: ^2.5
This package is auto-updated.
Last update: 2024-09-19 01:38:23 UTC
README
一个轻量级的独立MySQL数据库迁移管理器,支持多个环境。包含基础架构和种子数据。
安装
$ composer require soft4good/poorman-migrations $ vendor/bin/poorman-migrations setup
这将向您的项目根目录添加一个 .env 文件和一个 db/ 目录。
如果您有多个环境,可以为每个环境创建 env 文件,例如: .env.development、.env.staging、.env.production 等...
重要:请确保将您的 .env 文件添加到 .gitignore 中,以免敏感信息泄露到仓库。
db/ 目录包含三个子目录
db/migrations/
迁移是包含修改数据库结构指令的 SQL 脚本。
迁移文件名语法: <timestamp>_<name>.sql
使用 gen:migration 任务自动生成迁移(请参阅以下用法)
注意:您可能会在迁移脚本中添加 INSERT 查询(种子数据)。请勿这样做,特定环境的种子数据应放置在 seeds/ 目录中找到的 SQL 脚本中。在重置操作中,迁移脚本在数据库结构重置后立即运行,并且没有数据,将这些种子数据放在这些文件中可能会导致外键检查失败,使迁移无效。
db/seeds/
种子是包含填充数据库种子数据指令的 SQL 脚本。
您可以根据环境添加种子数据,默认为本地(local.sql)。
db/schemas
架构是数据库的基础/初始结构,这些脚本应仅包含结构代码。
您可以根据环境添加架构,默认为本地(local.sql)。
用法
Poorman Migrations 将公开 vendor/bin/poorman-migrations。用法如下
语法
$ ./poorman <task> [<environment>|<artifact_name>]
其中
<task>: setup | migrate | reset | init | seed | gen:migration
<environment>: development | staging | production | 等...
<artifact_name>: 仅在 <task=gen:migration> 时必需,迁移的名称(例如 'new_user_fields')
setup
您应该在安装步骤中运行此任务。它将交互式地创建一个 .env 文件,其中包含您提供的数据库凭据和基础 db 目录。
init
通过在指定环境的 db/schemas 中执行 SQL 脚本来加载数据库架构,默认为 local。
例如
$ vendor/bin/poorman-migrations init
将运行 db/schemas/local.sql
而
$ vendor/bin/poorman-migrations development
将运行 db/schemas/development.sql。
seed
从指定环境的 db/seeds 目录加载数据库种子,默认为 local。
例如
$ vendor/bin/poorman-migrations seed
将运行 db/seeds/local.sql
而
$ vendor/bin/poorman-migrations seed development
将运行 db/seeds/development.sql。
migrate
将执行在 db/migrations 目录中找到的数据库迁移。迁移按照文件名中的时间戳顺序运行。
我们通过查看数据库中的 schema_migrations 表来跟踪已迁移的脚本,如果不存在,则由 migrate 任务创建此表。
例如
$ vendor/bin/poorman-migrations migrate
您也可以指定要迁移的环境,就像其他任务一样。
gen:migration
此任务将创建一个带有指定 artifact_name 的空迁移文件。
例如
$ vendor/bin/poorman-migrations gen:migration create_users_table
此示例将创建一个文件 db/migrations/<timestamp>_create_users_table.sql。
您现在可以添加 SQL 语句到此 SQL 文件中,它将在您下次运行 migrate 任务时执行。
重置
执行重置将按照以下顺序运行这些任务:
initmigrateseed