问题标签 [pgx]
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.
postgresql - 扫描 Postgres float4 时出错:无法将 5000 分配到 pgtype.Float4
询问:
这是迭代一行的代码。number
是 Postgres 中的类型float4
。我pgtype.Float4
用于扫描。
我收到以下错误:
可能是什么问题?欢迎任何建议。先感谢您。
arrays - 使用 pgx 使用 JSONBArray 时出现“错误的元素类型”
我正在尝试插入一个具有inventory
with 数据类型的新行jsonb[]
:
但我收到以下错误:
Postgres 表定义:
可能是什么问题?任何想法都会有所帮助。
sql - 使用 jackc/pgx 将空字符串或 null 作为 null 插入 postgres
我使用的外部 json API 处理缺失值的方式不一致。有时 json 值显示为空字符串,有时显示为 null。例如...
Case1: datedec
andcurr
都是空字符串。
案例2:datedec
为空。curr
被填充。
这是我用来表示股息的结构:
我遇到的问题是如何将空字符串或 null 作为NULL
. 我知道我可以使用omitempty
json 标签,但是我将如何编写一个函数来处理我不知道会丢失的值?例如,这是我当前使用 jackc/pgx 包在 postgresql 中插入股息的函数:
如果缺少值(例如 datedec 或 curr),则此函数将出错。从这篇文章Golang Insert NULL into sql instead of empty string我看到了如何解决 Case1。但是有没有更通用的方法来处理这两种情况(空字符串或空字符串)?
我一直在查看 database/sql & jackc/pgx 文档,但我还没有找到任何东西。我认为 sql.NullString 有潜力,但我不确定我应该怎么做。
任何建议将不胜感激。谢谢!
postgresql - pgx.ErrNoRows 与查询返回的 err 不匹配
pgx 的新人。使用 pgxpool。我有一个简单的查询
即使实际上返回了 No Rows,我也永远不会得到“No Rows”。错误总是“结果集中没有行”,但它从不匹配 pgx.ErrNoRows,因为我知道它们应该是相同的。
在检查类型时,pgx.ErrNoRows = *errors.fundamental 而 err = *xerrors.errorString。
我在做什么或假设磨损?
编辑:
正如下面提到的@mkopriva,问题是goimport自动导入了错误的pgx,它需要是“github.com/jackc/pgx/v4”
database - 处理数据库查询中可能的空值的正确/惯用方法是什么?
我正在处理 Go 中的多对多关系。为此,我使用的是pgx
PostgreSQL 驱动程序。
为了使这个问题尽可能简单,让我们假设一个简单的博客文章可以有一些标签:
为了检索帖子及其标签,我使用了类似于以下查询的内容(为了在 Go 中轻松查询):
此查询可能会返回一些行,其中tag_id
和tag_name
为空。我目前处理此问题的方式如下(为简单起见,删除了错误处理):
如您所见,我正在使用pgtype
来处理潜在的空值。我应该提到这个解决方案有效。但是,我有两个问题:
- 这个解决方案看起来相当笨重和凌乱;阅读起来很复杂(至少对我而言)。有没有更好、更惯用的 Go 方式来做到这一点?
- 调用时,
tagID.Int.Uint64()
我总是0
以标签 ID 的形式返回,这是不正确的。我在这里做错了吗?(我使用pgtype.Numeric
是因为数据库中的标签 ID 是 pgsqlbigint
)。
postgresql - 使用 golang pgxpool 的 Postgres 表批量更新未反映在数据库中
我需要使用新转换的 ID(作为“记录”传入)更新一个相当大的 psql 表。我在下面创建了这个函数来利用 pgxpool 的连接池和请求批处理,如果我使用不同的客户端应用这些事务,它们会更新数据库,如果我查看打印出来的结果,它们表明每次有 1 行受到影响,但是当我从数据库中检索这些行,它们保持不变。我是否以某种方式错误地使用了批处理?
打印出:
postgresql - 如何将字符串转换为 sqlx.types.JSONText?
我正在使用gqlgen
,sqlx
和pgx
. 尝试使用自定义标量在 postgres 数据库中存储为 jonb 类型。
的期望结果a *Attributes
应该是{"target": "localhost"}
,在 postgres 中存储为 jsonb:
我做错了什么?
编辑:添加样本突变。
这是样本突变:
编辑:添加 sqlx 查询。
要插入的查询:
go - 如何使用 pgx 记录查询?
如果我使用 pgx 池,我找不到如何记录 sql 查询的文档。例如,我创建了这样的池:
请告诉我如何记录我的查询?
go - 使用 golang 批量查询创建 TimescaleDB 超表
我的 golang 服务需要在 Timescale DB 中动态创建一个超表。我使用pgx
驱动程序。我的代码如下(我删除了错误处理):
Exec()
返回错误
我在查询中添加了模式名称(如您所见),但这无济于事。如果我将它分成三个查询,一切正常
我想问题在于 timescale db 需要创建一个普通表并提交以创建一个超表。是对的还是有什么问题?有没有人遇到过这个问题,你是如何解决的?
sql - SQL 表名作为要查询的变量
我正在使用pgx库在 Go 中填充 Postgres 数据库。
问题:我也想将表名作为变量提供给查询,例如将tblinsert更改为
INSERT into $1 (id, body) VALUES ($2, $3)
问题:上面的代码出错并在我运行时返回“$1”或附近的语法错误(SQLSTATE 42601)”:
我不完全理解为什么错误消息甚至引用了$
占位符 - 我希望查询在这里进行字符串替换,就像 VALUES 一样。
我在这里和这里的纯 SQL 中发现了类似的问题,所以不确定这是否可能。.
任何关于我哪里出错的指针,或者我可以在哪里了解更多关于$x
语法的指针(我得到了上面的工作Sprintf
,但这似乎不鼓励)非常感谢 - 我对 SQL 和 Go 都很陌生。