我想将mysql数据库的所有查询/更新的事务隔离级别更改为已提交。由于我们使用的是google应用程序数据库,所以不能在mysql配置中更改它,因此需要在与数据库的连接中更改它。
我们使用的是Doctrine和Symfony3,除了发出命令(例如
$this->getEntityManager()->getConnection()->prepare('SET TRANSACTION ISOLATION LEVEL READ COMMITTED')->execute();我很确定有一些支持改变事务隔离,但我似乎无法解决如何实现这一点。
发布于 2020-01-14 03:26:00
https://www.doctrine-project.org/projects/doctrine-dbal/en/2.10/reference/transactions.html文档:
Doctrine\DBAL\Connection还具有控制底层数据库支持的事务隔离级别的方法。Connection#setTransactionIsolation($level)和Connection#getTransactionIsolation()可用于此目的。可能的隔离级别由以下常量表示:
请参阅隔离级别常量列表的文档。
所以你可以在每个连接上运行这个:
$this->getEntityManager()->getConnection()->setTransactionIsolation($level);如果您希望它是默认的,所以不必在每个连接中设置它,那么就必须在MySQL服务器的my.cnf文件中设置它。请参阅https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_transaction_isolation
如果您不能全局更改my.cnf,那么您必须使用一行代码为每个连接设置它,如上面所示。
https://stackoverflow.com/questions/59726105
复制相似问题