php - 如何在 Symfony2 中解析 'Integrity constraint violation' , 'a foreign key constraint fails'

标签 php mysql symfony doctrine-orm foreign-key-relationship

$ 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/

相关文章:

PHP 多重更新函数未更新并获取第一行空白

继承方法的phpdoc

PHP mysql查询不起作用

symfony - 如何让所有用户使用FosUserBundle?

php - 对mysql表进行排序并按金额排序

mysql - 学生连续缺课5天(节假日除外)

java - Digital Ocean 中托管的应用程序的 MySQL JDBC 驱动程序连接字符串应该是什么?

MySQL 的 PHP PDO 参数化查询

symfony - 数据库中的翻译和 Symfony2

php - 如何在 API 平台中创建自定义端点并将其添加到文档中?