【问题标题】:How can be changed operation order while flush刷新时如何更改操作顺序
【发布时间】:2019-03-26 12:12:59
【问题描述】:

我可以在 Doctrine 中刷新时更改 sql 执行顺序吗?

Mysql 有一个众所周知的错误。该语句可能会导致死锁

INSERT INTO operations(id, user_id) VALUES(null, 123);

UPDATE users SET user_name = 'name' WHERE id = 123;

Deadlock found when trying to get lock; try restarting transaction

所以,我在刷新时更改顺序,更新然后插入。我该怎么做?

文档说订单是预定义的

1) 所有实体插入 2) 所有实体更新 3) 所有集合 删除 4) 所有集合更新 5) 所有实体删除

https://www.doctrine-project.org/api/orm/2.7/Doctrine/ORM/UnitOfWork.html

但是我怎样才能改变这个顺序呢?

【问题讨论】:

  • 您尝试过生命周期回调吗?
  • 我会尝试更频繁地冲洗

标签: php mysql symfony doctrine


【解决方案1】:

无法更改。如果您遇到此问题,您需要创建自己的事务。并刷新更新,然后手动刷新插入。

【讨论】:

    猜你喜欢
    • 2020-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-08
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多