soft4good/poorman-migrations

一个轻量级的独立数据库迁移管理器,支持多个环境。包含基础架构和种子数据。

1.3 2020-03-17 23:42 UTC

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 任务时执行。

重置

执行重置将按照以下顺序运行这些任务:

  • init
  • migrate
  • seed