Я пытаюсь удалить ссылочный столбец из моей базы данных, локально используя sqlite3.
Получал SQLite3::ConstraintException: FOREIGN KEY constraint failed: DROP TABLE "features"
, поэтому я сначала попытался удалить внешний ключ. Это ничего не изменило в моем файле схемы, кроме версии, потому что миграция была успешно выполнена.
Теперь пытаемся
def up
remove_index :features, column: [:user_id]
end
def down
add_index :features, column: [:user_id]
end
И это заменяет t.index ["user_id"], name: "index_features_on_user_id"
на t.index [nil], name: "index_features_on_user"
Я попытался поиграть с удалением_индекса, чтобы он был просто :user
или :user_id
в качестве второго параметра, но безуспешно.
Я даже попытался добавить имя и тот же ноль remove_index :features, :user_id, name: :index_features_on_user
В конечном итоге я хочу удалить всю ссылку на пользователя, t.index
и t.integer "user_id"
, но не увенчался успехом, и подумал, что это потому, что там был тот индекс, который отказывался быть удаленным, но я мог ошибаться.
ОБНОВЛЕНИЕ
Вот таблица характеристик
create_table "features", force: :cascade do |t|
t.integer "instance_id"
t.integer "user_id"
t.integer "experiment_id"
t.string "name"
t.text "values"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.boolean "is_allow_na", default: false, null: false
t.index ["experiment_id"], name: "index_features_on_experiment_id"
t.index ["instance_id"], name: "index_features_on_instance_id"
t.index ["user_id"], name: "index_features_on_user_id"
end