问题标签 [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.

0 投票
1 回答
5805 浏览

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 字符串,并进一步使其对这些具有鲁棒性。

一些参考:

0 投票
2 回答
297 浏览

go - gorm:数据库特定的注释

我们正在使用gorm,我希望能够指定数据库特定的注释。为方便起见,在开发/测试中我们使用 sqlite3 数据库,然后在生产中使用 MySQL。

不幸的是 sqlite3 不接受CHARACTER SETCOLLATE关键字。这意味着以下中断:

有没有人找到解决这个问题的方法?我宁愿不在测试中使用 mysql,也宁愿不手动管理列。

0 投票
1 回答
197 浏览

go - 从虚拟文件系统(afero)加载 SQLite3 数据库

环境:

1) SQLite3 数据库文件被上传到文件服务器

2)文件被存储到虚拟文件系统中

3) 我想对该数据库执行 sql 查询

目前我正在使用go-sqlite3和位于afero的数据库文件。


问题:

是否有可能将数据库文件加载到 go-sqlite3 中,而不是来自 os 文件系统的文件。


目前的做法:

我当前的解决方案是将文件从 afero 复制到 os.TempDir() 目录中,但是我们的 ci 失败了,并且不是实际的解决方案,因为它不再使用专用文件系统。

0 投票
1 回答
95 浏览

go - Go 例程未执行

以下是给我带来问题的代码。我想要实现的是并行创建那么多表。创建所有表后,我想退出函数。

我正在创建两个通道 1 来跟踪创建的表数 (proc) 和其他 (allDone) 以查看是否全部完成。

当我运行此代码时,创建表的 go 例程开始执行,但在它完成之前 someFunction 被终止。

但是如果顺序运行代码没有问题

我的设计模式有什么错误以及如何纠正它。

0 投票
1 回答
890 浏览

go - 如何在golang中设置获取大小?

我正在尝试从数据库加载一个巨大的数据集。

程序是否一次将所有记录加载到内存中?或者有没有办法指定提取大小,以便程序一次只加载 n 行?假设数据库中有百万行,我想每次获取 1000 条记录。

0 投票
1 回答
73 浏览

sqlite - 有没有办法查看在 sqlite 中将参数应用于查询的结果?

我在 Go 中使用 sqlite3,出于调试目的,我希望看到将参数应用于查询的结果,即使用 ? 替换为实际参数。这可能吗?

目前,我有如下代码,打印的 FTS5 查询看起来不错:

它不会返回错误,但也找不到应该找到的内容,而且我不知道如何进一步调试:

0 投票
1 回答
1717 浏览

go - 带有 journal_mode=WAL 的 go-sqlite3 给出“数据库已锁定”错误

在 go 中,我使用 mattn/go-sqlite3 模块打开了一个 sqlite3 数据库。我使用 PRAGMA journal_mode=WAL 打开后立即将数据库日志模式设置为 WAL。

但是,如果我在第一个进程运行时尝试从第二个进程打开数据库,则第二个进程无法打开它,而是出现“数据库已锁定”错误。即使我没有执行任何交易,也会发生这种情况。

我正在使用的连接字符串是:

(我打算回答我自己的问题,因为调试花了很长时间)

0 投票
1 回答
83 浏览

go - 无法将 err 转换为 go-sqlite3.Error

吨

我正在尝试将 Go 中的错误转换为 go-sqlite3.Error,但它总是失败。上图代表我的调试窗口的快照,显示错误是 go-sqlite3.Error 类型

我正在使用下面的代码来输入强制转换。

0 投票
1 回答
912 浏览

go - JSON1 支持 go-sqlite3 使用 gorm

在以下示例中,我使用了Golang 中的驱动程序json_extract(...)go-sqlite3

问题是我无法在重建go-sqlite3驱动程序时激活 JSON1 模块。就会出错undefined function: json_extractdb.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 当前大师

0 投票
1 回答
1666 浏览

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 上运行?