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

执行sqlc generate提示users表relation不存在的问题求助

问题解决:sqlc generate 报错 relation "users" does not exist

核心原因

sqlc 生成代码时需要读取数据表的 schema 定义才能解析查询语句,当前它无法找到 users 表的结构定义——要么是 schema 文件路径配置错误,要么是迁移文件没被 sqlc 正确识别。

解决步骤

方案一:将 goose 迁移文件移至 sqlc 指定的 schema 目录

  1. 调整目录结构,把 001_users.sql 迁移文件放到 sqlc 配置的 sql/schema 目录下:
    project/
    ├── sql/
    │   ├── queries/
    │   │   └── users.sql
    │   └── schema/
    │       └── 001_users.sql
    ├── sqlc.yaml
    └── internal/
        └── database/
    
  2. 重新执行 sqlc generate,sqlc 会自动解析 schema 目录下迁移文件中的表结构。

方案二:单独创建 schema 文件供 sqlc 读取

如果不想移动 goose 迁移文件,可在 sql/schema 目录下新建 users_schema.sql,直接写入表结构定义:

CREATE TABLE "users"(
    "id" UUID PRIMARY KEY,
    "created_at" TIMESTAMP NOT NULL,
    "updated_at" TIMESTAMP NOT NULL,
    "name" TEXT NOT NULL
);

执行 sqlc generate 即可生成对应代码。

方案三:修改 sqlc.yaml 指向 goose 迁移目录

如果你的 goose 迁移文件存放在其他目录(比如 sql/migrations),直接修改 sqlc.yaml 的 schema 路径:

version: "2"
sql:
  - engine: "postgresql"
    queries: "sql/queries"
    schema: "sql/migrations"  # 改为你的 goose 迁移文件所在目录
    gen:
      go:
        out: "internal/database"
        sql_package: "pgx/v5"

注意:sqlc 会解析迁移文件中 -- +goose UP 下方的表结构,确保该部分语句无语法错误。

你提到 post 表能正常生成代码,可对比 post 表的 schema 文件路径配置,就能找到 users 表的配置差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 03:22:22