【问题标题】:Symfony 2 schema update fails on changing primary key datatype from integer to BigintSymfony 2 模式更新在将主键数据类型从整数更改为 Bigint 时失败
【发布时间】:2017-02-04 20:54:41
【问题描述】:

我有一个以列 id 作为主键的用户表。我在其他几个表中引用了这一列。现在我想将用户表 id 列的数据类型更改为 Bigint。因此,我将“整数”更改为“大整数”并成功生成实体。但是,如果我尝试更新架构,它就会失败。请就此提出建议。

主表(用户)yml:

table: users
id:
    id:
        type: bigint
        generator: { strategy: AUTO }

示例引用表(user_profiles)yml:

oneToOne:
    user_id:
      targetEntity: Users
      inversedBy: userprofile
      joinColumn:
        name: user_id
        referencedColumnName: id

错误

php 应用程序/控制台原则:schema:update --force

[Doctrine\DBAL\Exception\DriverException] 执行 'ALTER TABLE user_claim A 时发生异常 DD CONSTRAINT FK_CDFFA2C4A76ED395 FOREIGN KEY (user_id) REFERENCES users (id)': SQLSTATE[HY000]: 一般错误:1215 无法添加外键约束

我也尝试在 MySql 命令提示符下SET FOREIGN_KEY_CHECKS=0;。但是没用。

【问题讨论】:

  • 是否有任何选项可以在不检查外键的情况下更新架构?

标签: php mysql symfony doctrine-orm


【解决方案1】:

您需要将其他表中的外键列更新为与 ID (bigint) 相同的类型。

看看:Setting up foreign key with different datatype

【讨论】:

  • 但是在 symfony2 框架中,我们只能用表名引用连接列。我们不能显式地将数据类型添加到外键列。
  • 通过 sql 语句手动更新这些列。没有人通过教义强迫你做每一件事。如果您需要将这些更改推送到远程设置,请查看 phinx,例如 phinx.org
猜你喜欢
  • 1970-01-01
  • 2021-11-02
  • 1970-01-01
  • 2021-03-04
  • 2015-05-17
  • 2017-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多