mysql - 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;
解决方案
几年前有一个拉取请求,请查看https://github.com/doctrine/dbal/pull/2825 - 它清楚地说明了您的问题:
Doctrine 目前不支持 MariaDB 10.2.7+。模式创建/更新正在触发无限模式差异
从此拉取请求中的代码已包含在内doctrine/dbal:2.7.0
,因此您应该考虑至少更新该单个包
推荐阅读
- reactjs - 安装 react-redux@5.0.7 时遇到错误
- r - mtc.nodesplit error / Error in data[, "study"] == study : 未实现这些类型的比较
- android - FCM 通知在发布应用程序中不起作用
- django - 如何在 F 表达式中使用 jsonfield?
- python - Keras OCR 是否支持其他语言?
- java - 在运行 wildfly 的服务器(RHE7)上部署战争后出现 ClassNotFound 异常
- java - Firebase 远程配置不适用于 Google Play 上的实时版本
- php - php 中的 substr() 不索引过去的 '<' html 标签
- python - Pandas + BeautifulSoup - 如何在 for 循环下将数据添加到新列但同一行
- php - 加快 Mariadb 中的插入速度