sharkom/yii2-auto-migration

自动迁移mysql表变化

安装: 14

依赖关系: 0

建议者: 0

安全: 0

星星: 1

关注者: 1

分支: 0

开放问题: 0

类型:yii2-extension

v1.0.1 2023-03-01 23:28 UTC

This package is auto-updated.

Last update: 2024-09-30 01:49:04 UTC


README

为什么需要一个新的数据库迁移软件?

在敏捷软件开发中,数据库迁移通常需要额外的努力,如果在开发过程中没有逐个步骤进行,将显著减缓部署阶段。每个表的变化都需要创建一个迁移并应用它,这需要时间,并且需要高度纪律来正确管理所有更改。

如果没有这些,当开发需要快速进行时,可能会损害软件部署过程,减慢开发团队的进度。

这个迁移软件源于这样一个想法:这项活动没有价值,应该自动化。基于这个想法,我们创建了一个系统,该系统自动保存数据库模式结构,并在迁移期间自动识别变化并执行必要的SQL代码来应用它们,而不必编写所有迁移或手动逐个表地生成迁移。

此外,该系统还实现了一个回滚程序,该程序使用相同的机制并允许您撤销更改。

我们认为这个版本还不够完美,但我们已经在使用它,我们合理地相信它可以处理大多数可能的情况。

缺少什么?

  1. 需要移动数据的表迁移过程。
  2. 还原转储过程(目前需要手动导入)。
  3. 验证SQL代码涵盖了所有可能的字段类型。
  4. 正确管理校对集以保持相同的字符集(目前使用数据库的默认校对)。
  5. 使其即使在无法使用composer安装的模块(在供应商中)中也能使用 - 目前,该系统设置为我们的习惯,为所有我们开发的模块有一个私有composer仓库,但我们知道并非每个人都这样做,并希望使这个系统更通用。

当然,除此之外,还需要执行单元测试、调试,并了解是否需要其他更改才能使其成为完整的产品。

社区提供的任何帮助以实现这些功能或任何其他贡献以改进此系统都将受到欢迎。

谢谢!

此Yii2模块提供控制台控制器,用于自动化创建迁移模式和为遵循配置中指定模式的模块应用表迁移。

功能

  1. 生成所有模块的迁移模式
  2. 生成单个表的迁移模式
  3. 应用所有模块的迁移模式
  4. 应用单个表的迁移模式
  5. 回滚单个表的迁移
  6. 在应用迁移前转储表

安装

安装此模块的首选方法是使用composer。

可以运行

php composer.phar require sharkom/yii2-auto-migration "@dev"

或将

"sharkom/yii2-auto-migration": "@dev"

添加到您的composer.json文件的require部分。

用法

要使用此模块,您需要将其添加到您的Yii2配置文件的modules部分

'modules' => [
    'automigration' => [
        'class' => 'sharkom\automigration\Module',
        'interactive'=>1 //if 1 ask configmation before to apply migrations
        'pattern'=>"" //if 1 ask configmation before to apply migrations
    ],
],

在pattern参数中,您必须指定模块的供应商目录

为了能够工作,每个需要迁移的模块都必须在其目录中有一个MigrationTables.php文件,指定数据库表名(例如:vendor/sharkom/yii2-cron/MigrationTables.php)

<?php
return [
    "cron_job",
    "cron_job_run",
];

添加模块后,您可以使用提供的控制台控制器生成迁移模式并为所有遵循供应商目录中指定模式的模块应用表迁移。

要生成所有迁移模式,请运行以下命令

./yii automigration/migrate/generate-all-schemas

要生成单个表的迁移模式,请运行以下命令

./yii automigration/migrate/generate-schema-file <table-name> -m=<pattern>/<module>

要应用所有表的迁移,请运行以下命令

./yii automigration/migrate/apply-all-migrations

要应用单个表的迁移,请运行以下命令

./yii automigration/migrate/apply-migration <table-name> -m=<pattern>/<module>

要回滚单个表的迁移,请运行以下命令

./yii automigration/migrate/apply-migration <table-name> 1 -m=<pattern>/<module>

路径

  • 生成的架构存储在每个模块的 "schema" 目录中(例如:sharkom/yii2-cron/schema)
  • 回滚架构存储在 "rollback_schema" 目录中(例如:sharkom/yii2-cron/rollback_schema)
  • 备份转储存储在 "dumps 目录" 中(例如:sharkom/yii2-cron/dumps)