2016-09-27 76 views
1

我有一个列名为主键的用户表。我在其他几个表中引用了这一列。现在我想将用户表ID列的数据类型更改为Bigint。所以,我将'integer'更改为'bigint'并成功生成实体。但是,如果我尝试更新模式,它就会失败。请在此建议。Symfony 2模式更新在将主键数据类型从整数更改为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 app/console doctrine:schema:update --force

[Doctrine\DBAL\Exception\DriverException] An exception occurred while executing 'ALTER TABLE user_claim A DD CONSTRAINT FK_CDFFA2C4A76ED395 FOREIGN KEY (user_id) REFERENCES users (id)': SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint

我在MySQL命令试图SET FOREIGN_KEY_CHECKS=0;也提示。但没用。

+0

有没有任何选项来更新模式没有外键检查? – Radhakrishna

回答

1

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

看一看:Setting up foreign key with different datatype

+0

但是在symfony2框架中,我们只能使用表名引用连接列。我们不能显式地将数据类型添加到外键列。 – Radhakrishna

+1

通过sql语句手动更新这些列。没有人强迫你通过教义去做一切事情。如果您需要将这些更改推送到远程设置,请参阅phinx,例如https://phinx.org/ –

相关问题