You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Golang使用sqlc对接MySQL生成代码缺少结构体与函数入参问题求助

问题原因

你使用了PostgreSQL风格的$N占位符编写查询语句,而sqlc的MySQL引擎仅默认识别?作为参数占位符,无法解析$N格式的参数,所以生成的函数会丢失入参定义。

解决方法

将你的查询语句中的$1、$2、$3全部替换为MySQL风格的?占位符即可,修正后的查询SQL如下:

-- name: CreateUser :exec
INSERT INTO users (f_name,
                   m_name,
                   l_name)
VALUES (?, ?, ?);

-- name: GetUserByUserId :one
SELECT * FROM users
WHERE user_id = ?;

修改完成后重新执行sqlc generate命令,就能生成符合预期的代码:

  • CreateUser方法会自动生成对应三个字段的入参,你也可以通过sqlc.arg()语法配置为传入结构体参数
  • GetUserByUserId方法会自动新增int类型的user_id入参

内容的提问来源于stack exchange,提问作者Tosh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 21:57:05