我打开了与用户在golang程序中选择的sqlite数据库的连接。如果他们提供了一个不存在的文件的路径,那么我想抛出一个错误而不是创建文件。
我正在使用mattn/gp-sqlite3驱动程序。据我所知,文档没有提到这个功能。
FailIfMissing
选项,但格式不同。这与Make SQLite connection fail if database is missing? (deleted/moved)相同,但对于golang而不是C#。 golang驱动程序似乎使用不同的格式来描述与C#驱动程序的连接,因此我不知道那里的答案是否转换为golang。
答案 0 :(得分:5)
go-sqlite3库目前无法实现。 Looking at the source,您可以看到SQLITE_OPEN_CREATE
始终传递给open函数:
rv := C._sqlite3_open_v2(name, &db,
C.SQLITE_OPEN_FULLMUTEX|
C.SQLITE_OPEN_READWRITE|
C.SQLITE_OPEN_CREATE,
nil)
我建议您在程序包上open a ticket添加此类功能。
同时,您可以在创建数据库之前添加以下代码(请记住存在竞争条件,这就是您仍应在库本身中请求此功能的原因):
_, err := os.Stat("db.sqlite3")
if os.IsNotExist(err) {
panic("database doesn't exist")
}
// TODO: create db