Создание MySQL ALTER TABLE: «Нарушение ограничения целостности: 1452» - PullRequest
0 голосов
/ 04 февраля 2012

Приведенный ниже код при выполнении выдает следующую ошибку:

Неустранимая ошибка: необработанное исключение 'PDOException' с сообщением 'SQLSTATE [23000]: нарушение ограничения целостности: 1452 Невозможно добавить или обновить дочернюю строку: aСбой ограничения внешнего ключа

$db->executeUpdate('CREATE TABLE submission_statuses (name VARCHAR(255) NOT NULL, 
                    weight INT NOT NULL, PRIMARY KEY(name)) ENGINE = InnoDB');
$db->executeUpdate('ALTER TABLE submissions ADD CONSTRAINT IDX_4 
                    FOREIGN KEY (status) REFERENCES submission_statuses(name)');
$db->executeUpdate('CREATE INDEX IDX_4 ON submissions (status)');

В обеих таблицах используется механизм InnoDB.

1 Ответ

4 голосов
/ 04 февраля 2012

Таблица submissions содержит значение в столбце status, которого нет во вновь созданной таблице submission_statuses.Таблица submission_statuses должна быть заполнена до создания ограничения.

...