Sqlite3中的外键约束失败

时间:2016-07-06 11:54:40

标签: python flask sqlite

我正在第二次执行此脚本(这些表先前存在)并且正在获取外键约束失败错误。我是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

2 个答案:

答案 0 :(得分:0)

当您删除表时,效果与删除所有行的效果相同,并且这些删除可能会失败。

首先删除所有表格,然后按正确的顺序(先asset)。

答案 1 :(得分:-1)

将所有者(文本)设置为外键。尝试将其设置为整数。