我无法用这个查询锁定MySQL表:
DB::statement('LOCK TABLES imports WRITE');它规定了这些例外:
[Illuminate\Database\QueryException]SQLSTATEHY000:一般错误:在其他未缓冲的查询处于活动状态时,2014年无法执行查询。考虑使用PDOStatement::fetchAll()。或者,如果您的代码只对mysql运行,则可以通过设置PDO::MYSQL_ATTR_USE_BUFFERED_QUERY属性启用查询缓冲。(SQL:锁表导入写入)
当我使用PDO时也会发生同样的错误。
我该怎么用这个?
发布于 2015-10-08 15:46:03
// prevent rows from being modified until you're finished
DB::table('imports')->where('total', '>', 10)->sharedLock()->get();使用lockForUpdate()可以防止用另一个共享锁修改或选择行。
发布于 2016-03-15 13:12:03
如果您想要锁定整个表,并且想要使用LOCK TABLES table_name WRITE,那么应该以这种方式调用它-- DB::unprepared('LOCK TABLES imports WRITE');,但是如果您只想对选定的行应用锁,那么使用sharedLock()或lockForUpdate()是正确的方法,因此它将返回并只锁定选定的行。
https://stackoverflow.com/questions/31582445
复制相似问题