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
相关产品推荐
相关产品推荐

