在DBeaver 23.1.2中逐行调试SQLite语法错误问题求助
问题解答
一、修复SQL语法错误
你遇到的syntax error near "type_id"是因为objects表的外键声明语法错误,SQLite的外键约束有两种正确写法:
写法1:先定义列,再单独声明外键约束
CREATE TABLE IF NOT EXISTS my_types ( type_id INTEGER PRIMARY KEY AUTOINCREMENT, type_name TEXT NOT NULL ); CREATE TABLE IF NOT EXISTS objects ( id INTEGER PRIMARY KEY, type_id INTEGER, -- 必须先定义type_id列 content TEXT NOT NULL, FOREIGN KEY(type_id) REFERENCES my_types(type_id) -- 列名需用括号包裹 );
写法2:在列定义时直接指定外键
CREATE TABLE IF NOT EXISTS my_types ( type_id INTEGER PRIMARY KEY AUTOINCREMENT, type_name TEXT NOT NULL ); CREATE TABLE IF NOT EXISTS objects ( id INTEGER PRIMARY KEY, type_id INTEGER REFERENCES my_types(type_id), -- 直接在列后加外键关联 content TEXT NOT NULL );
二、DBeaver中逐行运行/排查SQL脚本
DBeaver没有针对SQLite的专门脚本调试器,但可以通过逐行执行语句来定位问题:
- 将光标定位到要执行的单条语句开头(比如第一个
CREATE TABLE语句) - 点击工具栏的「执行当前语句」按钮(快捷键默认是
Ctrl+Enter),或者选中某一段SQL代码后点击执行按钮 - 分段运行脚本,就能快速找到报错的具体语句位置。
内容的提问来源于stack exchange,提问作者skeetastax
相关产品推荐
相关产品推荐

