如何修复Flutter sqflite建表时DatabaseException near ")"语法错误
错误成因
- 你的建表SQL存在语法错误:SQLite的CREATE TABLE语句中,字段列表的最后一项不允许携带尾随逗号。你在最后一个字段
$createdTime TEXT NOT NULL后面多加了一个逗号,SQL解析到右括号前的逗号时无法识别,就会抛出near ")"的语法错误。 - 代码中建表语句插入的多余空行虽然不会直接引发报错,但会干扰语法问题的排查效率。
修复方法
- 修改
_onCreate方法中的建表SQL,删除最后一个字段后面的逗号,同时删掉多余的空行,修改后的代码如下:
Future _onCreate(Database db, int version) async { await db.execute(''' CREATE TABLE $table ( $columnId INTEGER PRIMARY KEY, $columnName TEXT NOT NULL, $address TEXT NOT NULL, $comments TEXT NOT NULL, $sigURL TEXT NOT NULL, $selfpicURL TEXT NOT NULL, $columnAge INT NOT NULL, $createdTime TEXT NOT NULL ) '''); }
- 触发数据库重新初始化:
- 测试阶段可以直接卸载设备上的原有应用后重新运行,旧数据库文件会被清除,首次启动会自动调用onCreate创建正确结构的表。
- 正式版本可以将
_databaseVersion的数值加1,同时补充onUpgrade回调逻辑处理表结构的版本更新。
内容的提问来源于stack exchange,提问作者Grace
相关产品推荐
相关产品推荐

