$ php app / console doctrine:schema:update --force
更新数据库架构......
[Doctrine\DBAL\DBALException]
An exception occurred while executing 'ALTER TABLE my_data_and_attribute
ADD CONSTRAINT FK_44E5AE29CAA2B25 FOREIGN KEY (data_id) REFEREN
CES my_data (id)':
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update
a child row: a foreign key constraint fails (`symfony`.`#sql-3e2_186`, CONSTR
AINT `FK_44E5AE29CAA2B25` FOREIGN KEY (`data_id`) REFERENCES `my_data` (`id`))
发生错误。
我最近从其他具有执行更新命令的数据库中替换了数据
所以,我认为错误的原因是我已经完成了替换数据
(我不知道它可能会因完全不同而导致什么。)
我也尝试改变phpMyAdmin的关系 但它失败了。
Error
SQL query:
ALTER TABLE `my_data_and_attribute` ADD FOREIGN KEY ( `data_id` ) REFERENCES `symfony`.`my_data` (
`id`
) ON DELETE CASCADE ON UPDATE RESTRICT ;
MySQL said: Documentation
#1452 - Cannot add or update a child row: a foreign key constraint fails (`symfony`.`#sql-3e9_1ea`, CONSTRAINT `#sql-3e9_1ea_ibfk_2` FOREIGN KEY (`data_id`) REFERENCES `my_data` (`id`) ON DELETE CASCADE)
我无法理解这个错误信息 我应该在哪里检查?
symfony.my_data
# Column Type Collation Attributes Null Default Extra
1 id int(11) No None AUTO_INCREMENT
// ...
Indexes:
Keyname Type Unique Packed Column Cardinality Collation Null Comment
PRIMARY BTREE Yes No id 517 A
symfony.my_data_and_attribute
# Column Type Collation Attributes Null Default Extra
1 data_id int(11) No None
2 attribute_id int(11) No None
INDEXES
Keyname Type Unique Packed Column Cardinality Collation Null Comment
PRIMARY BTREE Yes No data_id 483 A
attribute_id483 A
data_id BTREE No No data_id 483 A
attribute_id BTREE No No attribute_id37 A
关系视图
Column Internal relation Foreign key constraint (INNODB)
data_id // <- I can not set value this point.
attribute_id `symfony`.`my_attribute`.`id` ON DELETE CASCADE ON UPDATE RESTRICT
答案 0 :(得分:0)
我可能需要两个create table语句才能正确回答,但my_data_and_attribute.data_id与my_data.id的字段类型不完全相同。 例如,如果其中一个字段是UNSIGNED而另一个字段不是,或者字段的大小不同,则会发生这种情况。