MigrAlign 是一个 Laravel 扩展包,它可以查找迁移文件和实际数据库之间的差异,然后根据每项更改的风险程度,应用相应的安全措施。它主要针对模式漂移——即团队直接编辑表、跳过迁移或运行不同环境时产生的差异。
工作原理
MigrAlign 通过扫描迁移文件来读取迁移文件中的意图。
Schema::create()
和
Schema::table()
调用,然后内省来自
information_schema
在 MySQL 或 MariaDB 上。两者之间的差异会生成一组建议的更改。您可以在任何操作运行之前预览所有内容:
php
工匠
migralign:sync
--试运行
风险分类
MigrAlign 不会以相同的方式应用每一项更改,而是将每一项更改归入以下三个类别之一:
- 安全的: 添加可为空的列、加宽列宽以及仅更改元数据。
- 风险: 缩小类型、将列从可为空切换为不可为空,或缩减枚举类型。
- 破坏性的: 删除列或表。
安全更改会在以下情况下自动应用:
auto_apply_safe
已启用。在 MigrAlign 操作数据库之前,任何有风险且可能造成破坏性的更改都会提示用户确认,以防止用户在无人值守的情况下执行遗忘的删除操作。
定向同步
您可以将同步范围限定于单个表或迁移,而不是整个架构,这在只需要协调一个区域时非常有用:
# 同步特定表php
工匠
migralign:sync
--table=users# 同步特定迁移中的更改php
工匠
migralign:sync
--迁移=2024_01_01# 无需提示即可应用所有更改php
工匠
migralign:sync
- 力量
运行结束后,MigrAlign 会将每项更改报告为已应用、已跳过、待处理或已出错。
安装和配置
通过 Composer 安装软件包并发布配置文件:
作曲家
要求
migralign/laravel-migralignphp
工匠
供应商:发布
--tag=migralign-config
已发布的配置控制读取哪个迁移路径、忽略哪些表以及是否自动应用安全更改:
返回
[
'migrations_path'
=>
数据库路径
(
“迁徙”
),
'ignored_tables'
=>
[
“迁徙”
,
“会话”
,
“工作”
,
'失败的作业'
],
'auto_apply_safe'
=>
真的
,
'联系'
=>
无效的
,];
MigrAlign 需要 PHP 8.2+(Laravel 13 需要 8.3+),并支持 Laravel 11、12 和 13。它仅适用于 MySQL 和 MariaDB,并且具有高度动态逻辑的迁移可能仍然需要人工审核。
您可以访问[此处插入链接]了解更多信息并查看来源。 GitHub 。







