这个异常通常表示在创建表时,外键约束没有正确设置。具体解决方法如下:
-
确保表的创建顺序正确。如果"租赁"表引用了"电影"表的外键,那么应该先创建"电影"表,再创建"租赁"表。
-
确保外键约束被正确定义。在创建"租赁"表时,应该使用"电影"表的主键作为外键,并且在定义外键约束时,需要设置ON DELETE和ON UPDATE的行为。例如,可以设置为CASCADE,表示当"电影"表中的相应记录被删除或更新时,"租赁"表中的对应记录也会被删除或更新。
下面是一个示例代码,演示如何正确设置外键约束:
-- 创建电影表
CREATE TABLE 电影 (
id INTEGER PRIMARY KEY,
名称 TEXT,
导演 TEXT
);
-- 创建租赁表
CREATE TABLE 租赁 (
id INTEGER PRIMARY KEY,
电影_id INTEGER,
FOREIGN KEY (电影_id) REFERENCES 电影(id) ON DELETE CASCADE ON UPDATE CASCADE
);
在上面的示例中,"租赁"表中的"电影_id"列作为外键,引用了"电影"表的主键"id"列。并且设置了ON DELETE和ON UPDATE的行为为CASCADE。
如果还是遇到相同的异常,建议检查数据库的版本和配置,确保支持外键约束。有些版本的SQLite默认是不支持外键约束的,需要手动设置。可以通过执行以下命令启用外键约束:
PRAGMA foreign_keys = ON;