我打开了一个连接到用户在golang程序中选择的sqlite数据库的连接.如果他们提供了一个不存在的文件的路径,那么我想抛出一个错误,而不是创建该文件.
我正在使用mattn/gp-sqlite3驱动程序.据我所知,文档没有提到这个功能.
FailIfMissing选项,但在不同的格式.如果数据库丢失,这与Make SQLite连接失败相同?(删除/移动)但是对于golang而不是C#.golang驱动程序似乎使用不同的格式来描述与C#驱动程序的连接,因此我不知道那里的答案是否转换为golang.
go-sqlite3库目前无法实现这一点.查看源代码,您可以看到SQLITE_OPEN_CREATE始终传递给open函数:
rv := C._sqlite3_open_v2(name, &db,
C.SQLITE_OPEN_FULLMUTEX|
C.SQLITE_OPEN_READWRITE|
C.SQLITE_OPEN_CREATE,
nil)
Run Code Online (Sandbox Code Playgroud)
我建议你在包上打开一张票来添加这样的功能.
同时,您可以在创建数据库之前添加以下代码(请记住存在竞争条件,这就是为什么您仍应在库本身中请求此功能):
_, err := os.Stat("db.sqlite3")
if os.IsNotExist(err) {
panic("database doesn't exist")
}
// TODO: create db
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
563 次 |
| 最近记录: |