GORM 是否支持使用加密的 SQLite 数据库?

Does GORM support working with encrypted SQLite DB?

我需要为我的 Go 应用程序使用 ORM,它可以连接到 postgreSQL 数据库或 SQLite 数据库。

gorm 的文档没有提到任何关于连接到加密的 sqlite 数据库的内容。

是否可以使用它或以任何方式为 sqlite 提供自定义驱动程序,该驱动程序将与加密的 SQlite 数据库一起使用?

更新

根据 Ezequiel Muns 的评论,我更新了 gorm SQLite 驱动程序代码以使用 github.com/mutecomm/go-sqlcipher

可以找到这个新的 GORM 驱动程序 here

干杯!!

Gorm 使用一个驱动程序系统来适应其使用的各个数据库客户端。

您必须创建一个新模块来复制 go-gorm/driver/sqlite but updating https://github.com/go-gorm/sqlite/blob/master/sqlite.go#L8 的源代码以导入您选择的备用库。由于这些是分支并且它们符合 database/sql 接口,因此它应该可以正常工作。然后你就可以在 gorm 中正常使用这个新驱动程序了:

import (
    "gorm.io/gorm"
    sqliteEncrypt "path.to/your/gorm-sqlite-encrypt"
)

db, err := gorm.Open(sqliteEncrypt.Open("file:dbFileName?_crypto_key=auxten"), gorm.Options{})
if err != nil {
    panic("failed to connect database")
}
// ...

注意:您可以尝试通过使用 go.mod replace directive 来避免必须更新 go-gorm/driver/sqlite 中的任何源,尽管我不知道它如何与不使用的 CGO 模块一起使用它们本身没有一个 go.mod 文件,就像您链接的两个库一样。