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
文件,就像您链接的两个库一样。
我需要为我的 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
文件,就像您链接的两个库一样。