eks*_*tro 5 mysql laravel eloquent laravel-5
我无法使用此查询锁定MySQL表:
DB::statement('LOCK TABLES imports WRITE');
Run Code Online (Sandbox Code Playgroud)
它给出了这些例外:
[Illuminate\Database\QueryException]
Run Code Online (Sandbox Code Playgroud)
SQLSTATE [HY000]:常规错误:2014在其他未缓冲的查询处于活动状态时无法执行查询.考虑使用PDOStatement :: fetchAll().或者,如果您的代码只是针对mysql运行,则可以通过设置PDO :: MYSQL_ATTR_USE_BUFFERED_QUERY属性来启用查询缓冲.(SQL:LOCK TABLES导入WRITE)
使用PDO时会发生同样的错误.
我该怎么用?
如果你想要锁定整个表并且你想要使用LOCK TABLES table_name WRITE它应该以这种方式调用,DB::unprepared('LOCK TABLES imports WRITE');但是如果你只想在所选行上应用锁,那么使用sharedLock()或者lockForUpdate()是正确的方法这样做它将只返回并锁定选定的行.
// prevent rows from being modified until you're finished
DB::table('imports')->where('total', '>', 10)->sharedLock()->get();
Run Code Online (Sandbox Code Playgroud)
用于lockForUpdate()改为防止使用另一个共享锁修改或选择行。
| 归档时间: |
|
| 查看次数: |
3512 次 |
| 最近记录: |