Проблема была в том, что перед попыткой изменения контроля внешних ключей начиналась транзакция.
Как сказано в документации sqlite
It is not possible to enable or disable foreign key constraints in the middle of a multi-statement transaction (when SQLite is not in autocommit mode). Attempting to do so does not return an error; it simply has no effect.
Решено.