Laravel 迁移会锁定它们影响的表吗?
Do Laravel migrations lock the tables they affect?
我正在使用 MySQL。 The documentation 什么都没说。
如果还有什么我可以澄清的,请告诉我。谢谢你的时间。
我不能肯定迁移不会锁定受影响的表。但是,阅读 Illuminate\Database\Console\Migrations\MigrationCommand.php class 代码,我没有看到任何关于发生迁移命令时锁定表的内容。
我知道当您处理交易时(例如 DB::beginTransactions()、DB::commit() 和 DB::rollback()),lock/unlock 会发生。
Laravel 在模式更改期间不控制 table 锁。这是由数据库本身控制的。
对于 MySQL < 5.6,在模式更改期间将在 table 上持有读锁,然后将使用快速排他锁来完成更改。
对于 MySQL >= 5.6,使用 InnoDB,可以进行大多数模式更改,只需在更改开始时快速排他锁,在更改结束时快速排他锁。
您可以阅读 this answer 了解更多信息,或者您可以查看 MySQL 文档。
我正在使用 MySQL。 The documentation 什么都没说。
如果还有什么我可以澄清的,请告诉我。谢谢你的时间。
我不能肯定迁移不会锁定受影响的表。但是,阅读 Illuminate\Database\Console\Migrations\MigrationCommand.php class 代码,我没有看到任何关于发生迁移命令时锁定表的内容。
我知道当您处理交易时(例如 DB::beginTransactions()、DB::commit() 和 DB::rollback()),lock/unlock 会发生。
Laravel 在模式更改期间不控制 table 锁。这是由数据库本身控制的。
对于 MySQL < 5.6,在模式更改期间将在 table 上持有读锁,然后将使用快速排他锁来完成更改。
对于 MySQL >= 5.6,使用 InnoDB,可以进行大多数模式更改,只需在更改开始时快速排他锁,在更改结束时快速排他锁。
您可以阅读 this answer 了解更多信息,或者您可以查看 MySQL 文档。