跟随Flask教程时持续遭遇sqlite3.OperationalError错误求助
你的错误完全来自schema.sql中的语法错误,以下是两处关键问题及修正方案:
错误1:字段名格式错误
在post表定义中,你把字段名写成了author id,SQL中字段名不能包含空格,正确的字段名应该是author_id:
-- 错误写法 author id INTEGER NOT NULL -- 正确写法 author_id INTEGER NOT NULL
错误2:外键语法错误
SQL中外键的定义需要将外键字段和引用的表字段用括号包裹,你当前的写法不符合规范:
-- 错误写法 FOREIGN KEY author_id REFERENCES user_tb id -- 正确写法 FOREIGN KEY (author_id) REFERENCES user_tb(id)
修正后的完整schema.sql
DROP TABLE IF EXISTS user_tb; DROP TABLE IF EXISTS post; CREATE TABLE user_tb ( id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT UNIQUE NOT NULL, password TEXT NOT NULL ); CREATE TABLE post ( id INTEGER PRIMARY KEY AUTOINCREMENT, author_id INTEGER NOT NULL, created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, title TEXT NOT NULL, body TEXT NOT NULL, FOREIGN KEY (author_id) REFERENCES user_tb(id) );
替换你的schema.sql后,重新执行flask init-db命令,即可完成数据库初始化,错误会消失。
内容的提问来源于stack exchange,提问作者hunterb21
相关产品推荐
相关产品推荐

