在我的Golang(1.15)应用程序中,我使用sqlx包来处理PostgreSQL数据库(PostgreSQL 12.5)。
当我尝试使用参数PostgreSQL数据库执行SQL语句时,它会引发错误:
错误:无法确定参数 $1 的数据类型 (SQLSTATE 42P18): Pg错误空
根据官方文档,此错误意味着通过了。INDETERMINATE DATATYPE
具有值。它不是空/无或空的。此外,其数据类型是 简单的内置数据类型 。organizationId
*string
具有查询方法的代码段:
rows, err := cr.db.Query(`
select
channels.channel_id::text,
channels.channel_name::text
from
channels
left join organizations on
channels.organization_id = organizations.organization_id
where
organizations.tree_organization_id like concat( '%', '\', $1, '%' );`, *organizationId)
if err != nil {
fmt.Println(err)
}
我也尝试使用,但它也会引起错误:NamedQuery
错误:在“:”处或附近出现语法错误 (SQLSTATE 42601): PgError null
使用 NamedQuery 方法的代码段:
args := map[string]interface{}{"organization_id": *organizationId}
rows, err := cr.db.NamedQuery(`
select
channels.channel_id::text,
channels.channel_name::text
from
channels
left join organizations on
channels.organization_id = organizations.organization_id
where
organizations.tree_organization_id like concat( '%', '\', :organization_id, '%' );`, args)
if err != nil {
fmt.Println(err)
}
很有可能,参数没有正确地传递给我的请求。有人可以解释如何解决这种奇怪的行为吗?
附言我必须马上说,我不想通过 或通过该方法形成sql查询。这并不安全。concatenationfmt.Sprintf
宝慕林4294392
相关分类