必须先安装SQLite驱动和XORM库、使用合法路径(推荐相对路径./db/app.db)、调用engine.Ping()校验连接,并通过Sync2(new(User))同步建表;顺序错误或路径非法将导致panic。

要在Go项目中用XORM框架连接SQLite本地文件数据库,必须先准备好可执行的SQLite驱动、正确的连接路径写法、以及能被XORM识别的初始化结构——缺一不可,否则运行时直接panic:“no such file or directory”或“unable to open database file”。
安装SQLite驱动和XORM核心库
打开终端,进入你的Go项目根目录,执行两条命令:
go get github.com/mattn/go-sqlite3
go get xorm.io/xorm
注意:必须先装驱动再装xorm,顺序颠倒会导致编译时找不到sqlite3.Driver注册入口,【xorm.NewEngine("sqlite3", ...)会直接报错】。mattn/go-sqlite3是当前最稳定、被XORM官方文档明确推荐的SQLite驱动,不建议用其他fork版本。
确认SQLite文件路径是否合法
SQLite数据库就是一个普通文件,XORM连接时只认绝对路径或相对于**当前工作目录**的相对路径。
第一步:在项目根目录下新建一个db文件夹,然后手动创建空文件(不需内容):touch db/app.db
第二步:运行程序前,确保你在项目根目录下执行go run main.go——因为XORM默认按os.Getwd()获取的路径解析相对路径,如果从其他目录执行,.db文件就找不到了。
第三步:连接字符串里不能带中文、空格或特殊符号,路径中斜杠统一用正斜杠/,Windows下也别用反斜杠\,否则sqlite3驱动会静默失败。
初始化XORM Engine并测试连接
方法一:使用标准NewEngine方式
engine, err := xorm.NewEngine("sqlite3", "./db/app.db")
if err != nil { panic(err) }
这一步成功不代表数据库已就绪,只是打开了文件句柄;真正校验要调用engine.Ping(),它会尝试执行一条PRAGMA quick_check,返回nil才表示文件可读写。
方法二:启用日志与自动建表(推荐开发阶段)
engine.ShowSQL(true)
err = engine.Sync2(new(User))
Sync2会根据结构体字段标签自动建表,但前提是User结构体已定义且包含xorm tag;如果结构体没加pk标记,Sync2会跳过建表且不报错,容易误以为成功了。











