【问题标题】:Why does symfony remove autoincrement in migrations?为什么 symfony 移除迁移中的自动​​增量?
【发布时间】:2022-10-25 19:52:51
【问题描述】:

可用的:

  • Symfony 5.4
  • PostgreSQL 13

创建了一个实体,其中ID字段是一个自动增量

/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="SEQUENCE")
* @ORM\Column(name="id", type="integer", options={"autoincrement":true})
*/
private integer $id;

然后我执行了学说:迁移:差异命令,创建了一个带有迁移的 php 文件(此时 id 是自动递增的)。接下来,我执行了学说:迁移:迁移命令,在数据库中创建了一个表(此时,id也是自增的)。接下来,我向实体添加一个新字段,使用学说:迁移:差异命令,创建一个迁移,其中 symfony 从 id 中删除自动增量。

【问题讨论】:

  • 请显示两个迁移的内容
  • 您使用的是哪个版本的学说/dbal?

标签: php symfony migration


【解决方案1】:

我已设法复制您的问题。 我以前见过 Doctrine 用 'options' 属性做奇怪的事情,例如被完全忽略。然而,这很奇怪,它首先看到它,创建迁移,然后通过第二次迁移将其删除。

如果您的问题与自动增量有关,您可以尝试更改为以下内容:

#[ORMId]
#[ORMGeneratedValue(strategy: 'IDENTITY')]
#[ORMColumn(type: 'integer')]
private $id;

这似乎对我有用。 我正在使用属性,但您可以将它们调整为注释。

确保您删除任何以前创建的序列,否则您将遇到更多迁移问题,例如手动运行DROP SEQUENCE your_table_name_id_seq CASCADE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-11
    • 1970-01-01
    • 2014-09-30
    • 2017-05-18
    • 1970-01-01
    • 2011-07-23
    • 2019-03-16
    • 2017-11-11
    相关资源
    最近更新 更多