golang使用sqlite报错处理

报错

failed to initialize database, got error Binary was compiled with 'CGO_ENABL

编译或者调试的时候:

[root@...]# go env -w CGO_ENABLED=1

运行的时候有报错

[root@....]# ./yunwei-cdn-platform-v20240702

./yunwei-cdn-platform-v20240702: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by ./yunwei-cdn-platform-v20240702)

方法一、本地直接安装glibc

未使用这个方式(比较麻烦),因为当前系统是centos7.9,yum默认安装版本是低于2.28的,需要编译安装,担心兼容性问题

[root@yw-gw yunwei-cdn-platform]# yum install glibc

Loaded plugins: fastestmirror, langpacks

Loading mirror speeds from cached hostfile

方法二、使用容器化

[root@...]# cat Dockerfile

FROM alpine:3.11

WORKDIR /opt

RUN echo 'http://mirrors.aliyun.com/alpine/v3.9/main' > /etc/apk/repositories && echo -e 'http://mirrors.aliyun.com/alpine/v3.9/community' >> /etc/apk/repositories

RUN apk update \

&& apk add --no-cache tzdata \

&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \

&& echo "Asia/Shanghai" > /etc/timezone

RUN apk --no-cache add ca-certificates wget && wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub && wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.28-r0/glibc-2.28-r0.apk

RUN apk add glibc-2.28-r0.apk



# docker build -t alpine:3.17-glibc .

构建镜像

[root@...]# docker build -t alpine:3.17-glibc .

运行

docker run -d -v ./:/opt/ -p 9000:9000 --restart=always -e BROWSER_TZ=Asia/Shanghai --name xxx-platform alpine:3.17-glibc  ./xxx-platform-v20240702

使用 Golang 操作 SQLite 需要用到第三方库,可以使用 Go 官方推荐的 "database/sql" 包,再结合第三方库 "mattn/go-sqlite3" 进行操作。 以下是一个简单的示例代码,演示如何连接 SQLite 数据库,创建表,插入数据和查询数据: ```go package main import ( "database/sql" "fmt" _ "github.com/mattn/go-sqlite3" ) func main() { db, err := sql.Open("sqlite3", "./test.db") if err != nil { panic(err) } defer db.Close() // 创建表 _, err = db.Exec("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)") if err != nil { panic(err) } // 插入数据 stmt, err := db.Prepare("INSERT INTO users(name, age) values(?,?)") if err != nil { panic(err) } defer stmt.Close() _, err = stmt.Exec("Tom", 18) if err != nil { panic(err) } // 查询数据 rows, err := db.Query("SELECT * FROM users") if err != nil { panic(err) } defer rows.Close() for rows.Next() { var id int var name string var age int err = rows.Scan(&id, &name, &age) if err != nil { panic(err) } fmt.Println(id, name, age) } } ``` 在代码中,首先使用 `sql.Open` 函数连接 SQLite 数据库,然后使用 `db.Exec` 函数创建表,使用 `db.Prepare` 函数插入数据,使用 `db.Query` 函数查询数据。最后遍历查询结果,并使用 `rows.Scan` 函数将数据读取到变量中。 需要注意的是,在使用完数据库之后,需要使用 `db.Close` 函数关闭数据库连接。另外,SQLite 数据库文件可以指定路径,如本例中的 "./test.db"。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值