【发布时间】:2012-06-14 10:46:48
【问题描述】:
我在新服务器上部署了我的项目,当我尝试插入具有继承的类时出现错误“SQLSTATE [23000]:完整性约束违规:1452 无法添加或更新子行:外键约束失败” :
/**
* @ORM\Table(name="prosante")
* @ORM\Entity
*/
class ProSante extends Base
{
/**
* @ORM\Column(type="string")
*/
protected $firstName;
}
/**
* @ORM\Table(name="base")
* @ORM\Entity(repositoryClass="Test\MyBundle\Entity\BaseRepository")
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="discr", type="string")
* @ORM\DiscriminatorMap({"base" = "Base",
* "prosante" = "ProSante",
* "pharmacie" = "Pharmacie"})
*/
abstract class Base
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
}
日志:
[2012-06-11 15:42:46] doctrine.DEBUG: INSERT INTO base (name) VALUES (?) ({"1":"Blabla"}) [] []
[2012-06-11 15:42:46] doctrine.DEBUG: INSERT INTO prosante (id, firstname) VALUES (?, ?) ({"1":"0","2":"PATRICK"}) [] []
我不知道该怎么做,因为当我在 localhost 上执行相同的 INSERT 时错误不会出现。
编辑 我检查“SELECT LAST_INSERT_ID();”手动将新的“Base”插入我的数据库后,它不返回 0,我不明白。
解决方案这是一个驱动程序问题,我更改它并且它可以工作。
【问题讨论】:
-
你能解释一下这个问题吗?我遇到了同样的事情。
标签: php inheritance symfony doctrine-orm mysql-error-1452