shincoder / harmless-migration
此包已被弃用且不再维护。未建议替代包。
dev-master
2016-02-03 12:21 UTC
Requires
- php: >=5.5.9
- doctrine/dbal: ~2.4
- illuminate/config: 5.*
- illuminate/console: 5.*
- illuminate/database: 5.*
- illuminate/support: 5.*
Requires (Dev)
- mockery/mockery: 0.9.*
- phpunit/phpunit: 4.*
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