Sqlite3: Ошибка удаления записи: несоответствие внешнего ключа - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь удалить запись из таблицы пользователей.

Попытался удалить ее с помощью инструкции DELETE (DELETE FROM users WHERE user_id = 10 ", а также в моем браузере БД, но я получаю вышеошибка, в частности, она говорит: «Ошибка удаления записи: несоответствие внешнего ключа -« игры »ссылаются на« группы »(УДАЛИТЬ ИЗ« основного ».« Пользователи »ГДЕ rowid IN ('10');)". Ниже моей схемы:

CREATE TABLE пользователей (user_id INTEGER PRIMARY KEY, имя VARCHAR (255) NOT NULL, хэш VARCHAR (255) NOT NULL, UNIQUE (имя));

CREATE TABLE 'groups '(' group_name 'VARCHAR (255) NOT NULL,' turn 'INTEGER NOT NULL,' user_id'INTEGER, FOREIGN KEY ('user_id')) ССЫЛКИ 'users' ('user_id') НА ОБНОВЛЕНИЕ КАСКАД НА УДАЛЕНИЕ КАСКАД);

CREATE TABLE games (game_id INTEGER PRIMARY KEY, активный INTEGER, turn INTEGER, group_name VARCHAR (255) NOT NULL, FOREIGN KEY (поворот) Ссылки группы (turn_id) ОБНОВЛЕНИЕ КАСКАД НА УДАЛИТЬ КАСКАД, группа ИНОСТРАННЫЙ КЛЮЧ (группа FOREname)Ссылки группы (имя_группы) ОБНОВЛЕНИЕ CASCADE НА УДАЛИТЬ НЕТ ДЕЙСТВИЙ);

Почему это проблема? user_id даже не является внешним ключом в «играх» ?? Спасибо!

1 Ответ

0 голосов
/ 07 ноября 2019

В итоге проблема заключалась в моем браузере БД для SQLite (3.11.2), графический интерфейс которого позволяет удалять, но на самом деле они не работают. Когда я снова связал bash, закрыл и перезапустил браузер БД, строки пропали. Невзрачный, но я решил опубликовать, тем не менее, на случай, если кто-то еще столкнется с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...