Я развернул свой проект на новом сервере и ошибкой «SQLSTATE [23000]: Нарушение ограничения целостности: 1452 Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не отображается» появляется, когда я пытаюсь вставить класс с наследованием:Наследование наследования Doctrine2 - 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"}) [] []
Я не знаю, что делать, так как ошибка не появляется, когда я сделать то же INSERT на локальном хосте.
EDIT Я проверяю «SELECT LAST_INSERT_ID();» после того, как вручную вставьте новую «базу» в мою базу данных, она не вернет 0, я не понимаю.
РЕШЕНИЕ Это была проблема с драйвером, я меняю его и он работает.
Не могли бы вы объяснить эту проблему? Я сталкиваюсь с тем же. – Nate