Doctrine 迁移不会识别注释的更改(在生产中)

Doctrine migrations wont recognise changes to annotations (in production)

原题

下面的原因、注释和成员字段 @ORM\Column(type="string", length=20000) 不起作用,因为这对于 VARCHAR 来说太长了,所以我将它们全部更改为 @ORM\Column(type="text")

现在

我可能误解了在制作中处理迁移的正确方法,但我无法让我的数据库与我的实体相匹配。 运行 php bin/console doctrine:migrations:diffphp bin/console doctrine:schema:update --dump-sql 学说试图将数据库更新到旧版本的 Request.php 就像它已被缓存但即使在 运行 清除元数据之后迁移在我手动更改数据库后,所有人都说 VARCHAR(20000) 就像在这个 sql 转储中一样:

ALTER TABLE request CHANGE reasons reasons VARCHAR(20000) NOT NULL, CHANGE notes notes VARCHAR(20000) DEFAULT NULL, CHANGE members members VARCHAR(20000) NOT NULL;

当前Request.php

namespace App\Entity;

use App\Repository\RequestRepository;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
 * @ORM\Entity(repositoryClass=RequestRepository::class)
 */
class Request
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="time")
     * @Assert\LessThan(propertyPath="endTime", message="The booking must start before it ends")
     */
    private $startTime;

    /**
     * @ORM\Column(type="time")
     */
    private $endTime;

    /**
     * @ORM\Column(type="date")
     */
    private $date;

    /**
     * @ORM\Column(type="text")
     */
    private $reasons;

    /**
     * @ORM\Column(type="text", nullable=true)
     */
    private $notes;

    /**
     * @ORM\Column(type="text")
     */
    private $status;

    /**
     * @ORM\ManyToOne(targetEntity=User::class, inversedBy="requests")
     * @ORM\JoinColumn(nullable=true)
     */
    private $user;

    /**
     * @ORM\Column(type="text")
     */
    private $members;

我曾尝试删除 Request.php 实体,但随后学说对其消失感到不安。 (我在这里确实有一个与用户 table 的关系 link,但它是一对多的)。

更改成员原因和注释的名称有效,但当我改回名称时,它想将它们设置回 VARCHAR(20000)。它在哪里保存此信息。我该如何摆脱它?

Doctrine 元数据已缓存。当您清除缓存(并将其预热)时,symfony 运行“编译器通道”,除其他外读取注释以构建元数据、代理对象、注册存储库,所有这些东西(显然还有其他与原则无关的东西) ).

运行 bin/console cache:clear 应该解决您的问题。 (它也应该是您部署过程的一部分。除非您也复制供应商目录,composer install)。