gpt4 book ai didi

php - Symfony2 + Doctrine INSERT 查询失败且没有错误

转载 作者:行者123 更新时间:2023-11-28 23:14:44 25 4
gpt4 key购买 nike

我刚刚遇到 Symfony2 和 Doctrine ORM 的一个非常奇怪的问题。它停止在我的一个表中插入数据,过去几个月确实没有进行任何更改,但它开始失败,尽管没有 Doctrine 异常或任何东西,探查器显示插入执行得恰到好处。该实体收到 ID 0,并且数据库中没有记录。

这只是映射实体上的基本 persist + flush 组合。是的,实体已映射(也在探查器中检查)。

我想知道是否存在尽管查询未执行/未成功但 Doctrine 不会抛出异常的情况?我不知道在哪里寻找它。我确实检查了所有可能的配置。没有抛出异常。一切看起来都很好,应该是这样,但是没有插入数据。

我曾尝试使用命令行直接执行相同的查询,但效果很好。

我正在使用 Symfony 2.8,Doctrine 版本是2.7.2 用于 Doctrine\Common、Doctrine\ORM - 2.5.6(根据 composer.lock)

编辑

我刚刚开始从 Doctrine 那里得到非常奇怪的行为。很少有查询在从 Doctrine ORM 执行时不返回结果,但在直接执行时可以正常工作。

最佳答案

我确实解决了这个问题。它与使用 PDO::ATTR_EMULATE_PREPARES 的 PDO/DBAL 和 MySQL 准备语句模拟有关(您可以阅读它 here)。

只需将此选项恢复为 true 即可解决问题。我不得不调整依赖 false 的其他代码部分。

以防万一有人遇到这种问题,在 Symfony2 中我是这样配置的,只需删除选项 20 即可恢复默认值。请记住,任何返回整数(也可能是其他类型)的 DBAL 查询都将返回字符串。

doctrine:
dbal:
default_connection: default
connections:
default:
driver: pdo_mysql
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
options:
20: false // if you have this line and value set to false or 0, just remove it, this option defaults to true

关于php - Symfony2 + Doctrine INSERT 查询失败且没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44391567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com