问题标签 [go-sqlite3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
json - 来自 sqlite3 的 JSON 字段
我在 sqlite3 集合中有一个 json 字段。我的架构看起来像:
我了解 go-sqlite 接口不明确支持 json 数据类型。但是,我的 json 非常简单,因为所有字段都是 json 数组,例如;
所以完整的记录可能是:
使用包:
我能够提取我的 json 字段
也就是说,似乎 sqlite3 json 被存储在一个 unicode 字符串(?)中作为一系列......字节?......我可以使用 String 模块转换为字符串。我还对“+”连接操作感兴趣,所以我可以为下游的另一个应用程序制作一个查询+字符串+查找+东西。
但是,我真的很想将这一切都捆绑在 JSON 中,并利用 JSON 解组/解析而不是我的临时自定义打印。当我尝试:
它打印一个真正的整数数组。如何在启用 json 的类型定义中嵌入 strings.Join(sounds []uint8) 声明 + 函数转换组合?
此外,我不清楚如何在 json 为 null [] 或 true NULL 的情况下使用 []uint8 字符串,并进一步使其对这些具有鲁棒性。
一些参考:
go - gorm:数据库特定的注释
我们正在使用gorm,我希望能够指定数据库特定的注释。为方便起见,在开发/测试中我们使用 sqlite3 数据库,然后在生产中使用 MySQL。
不幸的是 sqlite3 不接受CHARACTER SET
和COLLATE
关键字。这意味着以下中断:
有没有人找到解决这个问题的方法?我宁愿不在测试中使用 mysql,也宁愿不手动管理列。
go - 从虚拟文件系统(afero)加载 SQLite3 数据库
环境:
1) SQLite3 数据库文件被上传到文件服务器
2)文件被存储到虚拟文件系统中
3) 我想对该数据库执行 sql 查询
目前我正在使用go-sqlite3和位于afero的数据库文件。
问题:
是否有可能将数据库文件加载到 go-sqlite3 中,而不是来自 os 文件系统的文件。
目前的做法:
我当前的解决方案是将文件从 afero 复制到 os.TempDir() 目录中,但是我们的 ci 失败了,并且不是实际的解决方案,因为它不再使用专用文件系统。
go - Go 例程未执行
以下是给我带来问题的代码。我想要实现的是并行创建那么多表。创建所有表后,我想退出函数。
我正在创建两个通道 1 来跟踪创建的表数 (proc) 和其他 (allDone) 以查看是否全部完成。
当我运行此代码时,创建表的 go 例程开始执行,但在它完成之前 someFunction 被终止。
但是如果顺序运行代码没有问题
我的设计模式有什么错误以及如何纠正它。
go - 如何在golang中设置获取大小?
我正在尝试从数据库加载一个巨大的数据集。
程序是否一次将所有记录加载到内存中?或者有没有办法指定提取大小,以便程序一次只加载 n 行?假设数据库中有百万行,我想每次获取 1000 条记录。
sqlite - 有没有办法查看在 sqlite 中将参数应用于查询的结果?
我在 Go 中使用 sqlite3,出于调试目的,我希望看到将参数应用于查询的结果,即使用 ? 替换为实际参数。这可能吗?
目前,我有如下代码,打印的 FTS5 查询看起来不错:
它不会返回错误,但也找不到应该找到的内容,而且我不知道如何进一步调试:
go - 带有 journal_mode=WAL 的 go-sqlite3 给出“数据库已锁定”错误
在 go 中,我使用 mattn/go-sqlite3 模块打开了一个 sqlite3 数据库。我使用 PRAGMA journal_mode=WAL 打开后立即将数据库日志模式设置为 WAL。
但是,如果我在第一个进程运行时尝试从第二个进程打开数据库,则第二个进程无法打开它,而是出现“数据库已锁定”错误。即使我没有执行任何交易,也会发生这种情况。
我正在使用的连接字符串是:
(我打算回答我自己的问题,因为调试花了很长时间)
go - JSON1 支持 go-sqlite3 使用 gorm
在以下示例中,我使用了Golang 中的驱动程序json_extract(...)
。go-sqlite3
问题是我无法在重建go-sqlite3
驱动程序时激活 JSON1 模块。就会出错undefined function: json_extract
就db.Raw(...)
行了。
无论如何,我知道对于 JSON 支持,github.com/mattn/go-sqlite3
必须使用-flags "sqlite_json1"
. 我尝试了几种变体:
以及更多变体flags
,例如sqlite_json
, json
,json1
等。没有什么可以摆脱未定义的函数错误。任何想法如何正确重建go-sqlite3
?
显然,在那之后我也重建了自己的代码。
一些信息:
去版本:(go version go1.13.1 linux/amd64
平台:Kubuntu 18.04)
go-sqlite3 版本:github.com/mattn/go-sqlite3 当前主
gorm 版本:github.com/jinzhu/gorm 当前大师
go - 如何使用 github.com/mattn/go-sqlite3 为 Google Cloud VM 交叉编译 Go 包?
这个问题与cross compile OSX to linux 的 go-sqlite3 编译器参数相同,但由于该问题没有答案,我将再次尝试询问。我有一个使用github.com/mattn/go-sqlite3 SQLite3 驱动程序的 Go 包,类似于以下内容:
但是,如果我尝试在启用 CGO 的情况下为 Linux AMD64 编译它(根据 SQLite3 的要求),我会收到以下错误:
同样,如果我按照 https://github.com/mattn/go-sqlite3#linux 中的说明进行指定--tags "linux"
,我会收到以下错误:
如何在我的 MacOS (Darwin AMD64) 笔记本电脑上交叉编译此包以在 Google Cloud Linux VM 上运行?