Nemozar
@Nemozar
Php developer

Wordpress dbDelta. Ошибка при создании FOREIGN KEY?

Добрый день.
Создаю свои таблицы для работы плагинов. Но столкнулся с проблемой создания связанных ключей. Мне нужно создать ключ с каскадным удалением от зависящей таблицы. Нашел что для wordpress стандартом считается dbDelta, в котором будет вызываться SQL запрос создания таблицы и worpress сам будет мутировать таблицу в mysql.

сделал примерно такой код

$sql = "CREATE TABLE wp_office_info (
id INTEGER NOT NULL AUTO_INCREMENT,
name TEXT,
val INTEGER,
id_office INTEGER,
UNIQUE KEY id (id),
FOREIGN KEY (id_office) REFERENCES wp_office(id) ON DELETE CASCADE
);"

При первом создании связь создается и все хорошо работает. Но когда ключил define('WP_DEBUG', true); то увидел такие строчки:
Ошибка базы данных WordPress: [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FOREIGN KEY (id_office) REFERENCES wp_office(id) ON DELETE CASCADE' at line 1]
ALTER TABLE wp_office_info ADD COLUMN FOREIGN KEY (id_office) REFERENCES wp_office(id) ON DELETE CASCADE

Т.е. он думает что это поле и пытается сделать код для добавления такого поля (хотя при первом создании таблицы все хорошо проходит и создается как надо.

Как вы проводите миграции (если они есть) и как правильно решить проблему с внешними ключами?
  • Вопрос задан
  • 141 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы