首页 > 解决方案 > Symfony Doctrine 运行相同的查询

问题描述

自从上个月对我的服务器进行了最后一次更新以来,我遇到了一个不寻常的 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;

标签: mysqlsymfonydoctrine

解决方案


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

Doctrine 目前不支持 MariaDB 10.2.7+。模式创建/更新正在触发无限模式差异

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


推荐阅读