使用第三方SQLite驱动解决GORM SQLite需要CGO环境才能工作的问题

使用 Golang 开发了一个小玩意,用到SQLite数据库,在交叉编译跨平台项目后发现项目运行出错,报错如下:

Source Code

 
  1. [error] failed to initialize database, got error Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub panic: Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub

GORM 官方的 SQLite 驱动使用了CGO实现,需要在CGO环境下才能工作,在编译的时候需要把 CGO_ENABLED启用,但是在Windows系统上编译会出现各个各样的编译问题,尤其是在进行交叉编译arm的时候。在官方GitHub issue中找到了相关问题,也给出了对应的相关方案,便是使用第三方的SQLite驱动,项目地址:https://github.com/glebarez/sqlite ,该驱动是由纯go实现的,不依赖CGO。
使用方法很简单:

Source Code

 
  1. go get github.com/glebarez/sqlite

然后把代码import 中原 gorm 的sqlite 替换为 "github.com/glebarez/sqlite" 即可。

当然使用第三方驱动的性能肯定是比不上官方的,静态编译的体积也会稍微比较大,不过牺牲这么点也没啥,毕竟也不是什么大项目。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值