【问题标题】:Symfony Doctrine runs same queriesSymfony Doctrine 运行相同的查询
【发布时间】:2020-09-22 12:14:26
【问题描述】:

自从上个月我的服务器上一次更新以来,我在 Doctrine 遇到了一个不寻常的问题。

当我运行 doctrine:schema:update --force 时,我的结果是“执行了 54 个查询”。即使我不更改我的实体也会发生相同的结果。

当我运行doctrine:schema:update --dump-sql 查看查询时,我可以看到相同的查询正在运行。例如:

ALTER TABLE artisan CHANGE creator_id creator_id INT DEFAULT NULL;
ALTER TABLE user_connection CHANGE date date DATETIME DEFAULT NULL;
ALTER TABLE device CHANGE device_type device_type VARCHAR(500) DEFAULT 'ios' NOT NULL;

问题在于列的类型与查询更改的类型相同。不知道 Doctrine 为什么要改类型。

MariaDB 版本是 10.4.13 - Doctrine 版本是 2.5.14 - Symfony 版本是 2.8.42

实体示例:

设备:device_type

/**
 * @var string
 *
 * @ORM\Column(name="device_type", type="string", length=500, options={ "default":"ios" })
 */
private $device_type = "ios";

用户连接:日期

/**
 * @var \DateTime
 *
 * @ORM\Column(name="date", type="datetime", nullable=true)
 */
private $date;

工匠:创造者

/**
 * @var User
 *
 * @ORM\ManyToOne(targetEntity="MiddlewareBundle\Entity\User")
 * @ORM\JoinColumns({
 *     @ORM\JoinColumn(name="creator_id", referencedColumnName="id", nullable=true)
 * })
 */
private $creator;

【问题讨论】:

  • 是否运行“describe table artisan;”提供有关如何定义 creator_id 的任何线索?
  • 是的,但是不同的类型会遇到同样的问题。创建者 ID 为:字段类型 Null 键默认额外 - creator_id int(11) YES MUL NULL
  • 我记得在 Symfony 2 早期时有时会遇到此类问题。我会通过简单地删除模式然后重新创建它来解决它们。我怀疑你会有一个选择。您的服务器升级大概升级了您的 mysql 版本,这可能是导致问题的原因。您的 Symfony/Doctrine 版本非常旧。抱歉,我无法提供任何灵丹妙药来解决此问题。也许其他人可以。
  • 正如您在github.com/doctrine/dbal/releases/tag/v2.7.0 上看到的,在doctrine/dbal:2.7.0 中添加了对MariaDB 的明确支持

标签: mysql symfony doctrine


【解决方案1】:

几年前有一个拉取请求,看看https://github.com/doctrine/dbal/pull/2825 - 它清楚地说明了你的问题:

Doctrine 当前不支持 MariaDB 10.2.7+。架构创建/更新正在触发无限架构差异

此拉取请求的代码自 doctrine/dbal:2.7.0 以来已包含在内,因此您应该考虑至少更新该单个包

【讨论】:

  • 感谢您的回答。我也想到了版本问题,但我想尽可能避免它,因为我们的应用程序的复杂性和状态仍在开发中。
  • “避免”是什么意思?如果这是仅在更高版本中修复的问题,那么除了更新之外别无他法。此外,即使您的应用程序处于“开发中”,升级库也不应该太难,如果有适当的测试覆盖率,应该可以轻松实现
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-20
相关资源
最近更新 更多