Do Laravel迁移是否锁定它们影响的表?

问题描述:

我正在使用MySQL。 The documentation在这件事上没有说什么。Do Laravel迁移是否锁定它们影响的表?

让我知道如果有什么我可以澄清。感谢您的时间。

在模式更改期间,Laravel不控制表锁。这由数据库本身控制。

对于MySQL < 5.6,在模式更改期间在表上将保持一个读锁,然后使用快速排他锁定来完成更改。

对于MySQL> = 5.6,使用的是InnoDB,大多数架构更改可以只需要在变化开始快速排它锁,并在这些变化的结束一个快速进行。

可以多一点信息,请阅读this answer,或者你可以检查出MySQL的文档。

我不能肯定,迁移将不会锁定受影响的表。但是,阅读Illuminate \ Database \ Console \ Migrations \ MigrationCommand.php类代码,当迁移命令发生时,我没有看到任何涉及锁定表的内容。

我知道,当你在事务中工作(例如,DB :: beginTransactions(),DB :: commit()和DB ::回滚())的锁定/解锁occours。