$ php 应用程序/控制台学说: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
关系 View
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
最佳答案
我可能需要两个 create table 语句才能正确回答,但很可能 my_data_and_attribute.data_id 与 my_data.id 的字段类型不完全相同。 例如,如果其中一个字段是 UNSIGNED 而另一个字段不是,或者两个字段的大小不同,则可能会发生这种情况。
关于php - 如何在 Symfony2 中解析 'Integrity constraint violation' , 'a foreign key constraint fails',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22321503/