JSON1使用gorm支持go-sqlite3

JSON1使用gorm支持go-sqlite3,go,go-gorm,go-sqlite3,Go,Go Gorm,Go Sqlite3,在下面的示例中,我使用json_extract。。。在Golang中使用go-sqlite3驱动程序 包干管 进口 _github.com/mattn/go-sqlite3 github.com/jinchu/gorm _github.com/jinchu/gorm/dialogons/sqlite fmt 编码/json net/http func main{ var db*gorm.db 类型会话结构{ 戈姆模型 SessionID字符串`json:session\u id` 选项字符串`j

在下面的示例中,我使用json_extract。。。在Golang中使用go-sqlite3驱动程序

包干管 进口 _github.com/mattn/go-sqlite3 github.com/jinchu/gorm _github.com/jinchu/gorm/dialogons/sqlite fmt 编码/json net/http func main{ var db*gorm.db 类型会话结构{ 戈姆模型 SessionID字符串`json:session\u id` 选项字符串`json:Options` } db,err:=gorm.Opensqlite3,./app.db 如果错误!=零{ 打印错误 } 延迟数据库关闭 db.AutoMigrate&会话{} var m映射[string]int m=makemap[string]int m[a]=1 m[b]=2 m[c]=3 js,err:=json.marshallm sess:=会话{ 会话ID:测试, 选项:stringjs, } db.Create&sess db.Save&sess var b=&会话{} 类型结果结构{ 选项字符串 } //JSON测试 var res结果 db.RawSELECT json_extractoptions,'$.a'作为sessions.Scan&res中的选项 fmt.printlnses.ID 印刷品 } 问题是,在重建go-sqlite3驱动程序时,我无法激活JSON1模块。它将在db.Raw上错误地定义函数:json_extract。。。线路

无论如何,我知道对于JSON支持,github.com/mattn/go-sqlite3必须使用-flags sqlite_json1进行编译。我尝试了几种变体:

go build-a-flags sqlite_json1 github.com/mattn/go-sqlite3 go install-a-flags sqlite_json1 github.com/mattn/go-sqlite3 go build-a-flags sqlite_json1 github.com/mattn/go-sqlite3 go install-a-flags sqlite_json1 github.com/mattn/go-sqlite3 还有更多的标志变体,如sqlite_json、json、json1等。没有任何东西可以消除未定义的函数错误。有没有关于如何正确重建go-sqlite3的想法

显然,在那之后我也重建了自己的代码

一些信息:

go版本:go版本go1.13.1 linux/amd64平台:Kubuntu 18.04

go-sqlite3版本:github.com/mattn/go-sqlite3当前主机

gorm版本:github.com/jinchu/gorm current master根据go-sqlite3的文档,以下任何标志都有效:

sqlite_json sqlite_json1 json1 下面是sqlite3_opt.json1.go的内容,它定义了包含此文件的标记

// Copyright (C) 2014 Yasuhiro Matsumoto <mattn.jp@gmail.com>.
//
// Use of this source code is governed by an MIT-style
// license that can be found in the LICENSE file.

// +build sqlite_json sqlite_json1 json1

package sqlite3

/*
#cgo CFLAGS: -DSQLITE_ENABLE_JSON1
*/
import "C"
参考:

同样要指出的是,您在go build命令中使用了-flags,但是尝试一下-tags。

带有任何值sqlite_json、sqlite_json1和json1的-tags和-flags仍然会生成具有相同错误的生成。奇怪的是,在C合并中直接执行该操作确实有效,即:在sqlite3 binding.C中定义SQLITE_ENABLE_JSON1,并在src目录中运行go build-a。