我正在第二次执行此脚本(这些表先前存在)并且正在获取外键约束失败错误。我是Sqlite3的初学者,我无法弄清楚它背后的原因。
Schema.sql
PRAGMA foreign_keys = 1;
drop table if exists user;
create table user(uid integer primary key autoincrement,
username text not null,
password text not null,
email text not null,
isadmin integer default 0);
drop table if exists asset;
create table asset(aid integer primary key autoincrement,
assetname text not null,
releasedate text,
owner integer default 0,
isreserved integer default 0,
foreign key(owner) references user(uid) on delete set default);
我正在用Python脚本阅读这个文件。
错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "main.py", line 37, in create_table
conn.cursor().executescript(f.read())
sqlite3.IntegrityError: foreign key constraint failed
答案 0 :(得分:0)
当您删除表时,效果与删除所有行的效果相同,并且这些删除可能会失败。
首先删除所有表格,然后按正确的顺序(先asset
)。
答案 1 :(得分:-1)
将所有者(文本)设置为外键。尝试将其设置为整数。