SQLx查单行必须用Get而非QueryRow,以启用StructScan;Exec仅用于无结果集的增删改,RETURNING需配Get/Select;命名参数仅PostgreSQL原生支持,MySQL/SQLite需用位置参数或Rebind。SQLx 查询单行数据用 Get,别用 QueryRowSQLx 封装了 database/sql,但直接调 QueryRow 会绕过 SQLx 的结构体自动扫描能力,导致字段映射失败或 panic。正确做法是统一走 SQLx 提供的 Get(查单行)或 Select(查多行)。常见错误现象:sql: Scan error on column index 0: unsupported driver -> Scan pair: *string -> *interface{}------本质是没让 SQLx 知道目标结构体类型。Get 内部会调用 QueryRow,但额外做了 StructScan,必须传入地址(&user)结构体字段需有对应 tag,如 db:"id",否则按字段名全小写匹配列名如果查不到数据,Get 返回 sql.ErrNoRows,不是 nilvar user Usererr := db.Get(&user, "SELECT id, name FROM users WHERE id = $1", 123)SQLx 执行原生 INSERT/UPDATE/DELETE 用 Exec,返回 sql.Result和 database/sql 一样,增删改不返回结果集,只关心影响行数或最后插入 ID。SQLx 的 Exec 和标准库行为一致,但支持命名参数(需配合 NamedQuery)。使用场景:需要获取自增 ID 或判断是否成功更新某条记录。立即学习"go语言免费学习笔记(深入)"; 文心快码 文心快码(Comate)是百度推出的一款AI辅助编程工具
相关推荐
captain37616 分钟前
MyBatis操作数据库(入门2)wflynn29 分钟前
GitHub 今日推荐|Edge0:让大号 MoE 模型在一台 Mac 上流式跑起来心中有你021438 分钟前
Java实现Dijkstra最短路径算法(邻接表 + 优先队列)2601_967980111 小时前
python之用scapy分层解析pcap报文(Ethernet帧、IP数据包、TCP数据包、UDP数据包、Raw数据包)龙亘川1 小时前
综合素质评价业务建模:从过程性评价到成长档案全链路闭环心疼你的一切1 小时前
Python自动发邮件实战定时发报表数据库小组1 小时前
NineData 实战教程:MySQL 5.5 数据迁移同步到 MySQL 8.0(跨版本升级)zhangjw342 小时前
1-5 PostgreSQL 数据类型全集:基础类型、字符串、数值、时间类型王中阳Go2 小时前
5.27 分钟干完后端和全部测试:一场三小时笔试的五个失分点,四个不在代码上cnskylee2 小时前
【MySQL】麒麟V10 SP3系统安装MySQL-Commercial-8.0.46