SQLAlchemy ondelete и onupdate не обновляют базу данных

Я использую Flask-SQLAlchemy с базой данных MySQL, используя механизм InnoDB, который поддерживает ondelete и onupdate.

У меня есть следующее в моей таблице "Сообщения", которая ссылается на таблицу Accounts:

account_id = db.Column(db.Integer, db.ForeignKey('accounts.id', onupdate="CASCADE", ondelete="CASCADE"))

Я обновил базу данных с помощью Flask-Migrate (Alembic) и заметил, что значения onupdate и ondelete не изменяются, когда я указываю onupdate="CASCADE", ondelete="CASCADE", хотя в нем указано, что я должен использовать его таким образом в Документация по SQLAlchemy

В чем может быть проблема? Спасибо.


person Pav Sidhu    schedule 23.08.2015    source источник


Ответы (1)


Причина, по которой значения ondelete и onupdate не обновляются, заключается в том, что их нельзя изменить, когда этот внешний ключ уже присутствует.

Чтобы изменить его, мне пришлось удалить внешний ключ из таблицы, обновить базу данных, а затем повторно добавить его в таблицу со значениями, которые вы хотите, а затем обновить еще раз.

person Pav Sidhu    schedule 24.08.2015