【问题标题】:Sqlite3: Error deleting record: foreign key mismatchSqlite3:删除记录时出错:外键不匹配
【发布时间】:2020-02-29 11:57:57
【问题描述】:

我正在尝试从表用户中删除一条记录。

尝试使用 DELETE 语句(DELETE FROM users WHERE user_id=10)以及在我的数据库浏览器中删除它,但我收到上述错误,特别是它说:“错误删除记录:外键不匹配 -”游戏" 引用 "groups" (DELETE FROM "main"."users" WHERE rowid IN ('10');)"。 在我的架构下方:

创建表用户 ( user_id 整数主键, 名称 VARCHAR(255) 非空, 哈希 VARCHAR(255) 非空, 唯一(名称));

创建表“组”( 'group_name' VARCHAR(255) NOT NULL, '转' INTEGER NOT NULL, 'user_id'整数, FOREIGN KEY ('user_id') REFERENCES 'users'('user_id') 更新级联 删除级联 );

创建表游戏( game_id 整数主键, 活跃的整数, 转整数, group_name VARCHAR(255) 非空, FOREIGN KEY (turn) REFERENCES groups(turn_id) 更新级联 在删除级联时, FOREIGN KEY (group_name) REFERENCES groups(group_name) 更新级联 删除无操作 );

为什么会出现这个问题? user_id 甚至不是“游戏”中的外键??谢谢!

【问题讨论】:

  • 删除用户会级联删除匹配的组行,这会导致匹配的游戏行……什么都不做,导致 FK 不匹配。

标签: sqlite foreign-keys


【解决方案1】:

最后的问题是我的 SQLite 数据库浏览器 (3.11.2),它的 GUI 允许删除,但它们实际上不起作用。当我再次绑定 bash 并关闭并重新启动数据库浏览器时,这些行已经消失了。没有洞察力,但我想我还是会发帖以防其他人遇到这个问题。

【讨论】:

    猜你喜欢
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多