shincoder/harmless-migration

此包已被弃用且不再维护。未建议替代包。

dev-master 2016-02-03 12:21 UTC

This package is not auto-updated.

Last update: 2021-08-21 02:13:10 UTC


README

Laravel 5 测试数据库迁移的包

请勿在生产环境中使用!我们仍需要一些测试和反馈。

原因

Mysql 不允许在事务中包含表操作(Postgresql 可以),这就是当你搞砸了一个迁移时,你基本上会陷入无法修复的损坏状态的原因。

因此,这个包背后的主要思想如下

  • 我们为用户指定的每个连接创建一个测试数据库(或使用默认的数据库)。
  • 我们在运行时切换配置到新数据库,替换真实数据库。
  • 我们刷新连接,以便 Laravel 可以使用新的配置。
  • 我们在测试数据库上运行 php artisan migrate
  • 完成后,我们删除测试数据库。
  • 任何可能发生的错误都会显示给用户。
  • 真实数据库保持不变。

不支持 SQLite

目前不支持 SQLite 数据库。如果有人有好的想法,那将是极好的。

安装

composer require shincoder/harmless-migration:dev-master

添加服务提供者

编辑你的 config/app.php 提供者数组,添加以下内容

'Shincoder\Harmless\HarmlessServiceProvider',

迁移移除

该包无法猜测你使用的是哪些连接。因此,如果你使用多个数据库连接,你必须使用 --database=db1,db2 选项指定所有连接。如果不指定,则命令将使用 config/database.php 中的默认连接。

如果你不指定所有连接,一些迁移仍然会在你的真实数据库上运行。如果你只使用默认连接,这不应该成问题。

  • 默认数据库连接 php artisan migrate:test

  • 多个数据库连接 php artisan migrate:test --database=defaultConnection1,connection2