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

如何将go-admin连接到PostgreSQL数据库?解决goadmin_session不存在报错

问题描述

我按照go-admin官方文档配置了后台管理面板与PostgreSQL数据库,因使用Docker容器,将数据库主机设为"db"。但访问首页端点时出现报错,文档中未找到关于"goadmin_session"的相关说明,不知如何解决。

配置代码

cfg := config.Config{
    Databases: config.DatabaseList{
        "default": {
            Host:         "db",
            Port:         "5432",
            User:         "gorm",
            Pwd:          "gorm",
            Name:         "gorm_db",
            MaxIdleConns: 50,
            MaxOpenConns: 150,
            Driver:       "postgresql",
        },
    },
    UrlPrefix: "admin", // The url prefix of the website.
        // Store must be set and guaranteed to have write access, otherwise new administrator users cannot be added.
    Store: config.Store{
        Path:   "./uploads",
        Prefix: "uploads",
    },
    Language: language.EN,
}

报错栈信息

engine/engine.go:402    =====> Initialize database connections
2023-03-30T09:49:43.715842137Z 检查 pg 配置 host=db port=5432 user=gorm password=gorm dbname=gorm_db sslmode=disable
2023-03-30T09:49:43.736955435Z Database connection closed
2023-03-30T09:49:43.739423928Z panic: pq: relation "goadmin_session" does not exist
2023-03-30T09:49:43.739453429Z 
2023-03-30T09:49:43.739462206Z goroutine 1 [running]:
2023-03-30T09:49:43.739469476Z github.com/GoAdminGroup/go-admin/modules/db.CommonQuery(0x14d2600?, {0xc00045b840?, 0x1630314?}, {0xc000277220?, 0x0?, 0x0?})
2023-03-30T09:49:43.739641400Z  /go/pkg/mod/github.com/!go!admin!group/go-admin@v1.2.24/modules/db/performer.go:20 +0x676
2023-03-30T09:49:43.739652103Z github.com/GoAdminGroup/go-admin/modules/db.(*Postgresql).QueryWithConnection(0xc0002b61e0, {0x1630314, 0x7}, {0xc00045b800?, 0x8a29a8?}, {0xc000277220, 0x1, 0x1})
2023-03-30T09:49:43.739659429Z  /go/pkg/mod/github.com/!go!admin!group/go-admin@v1.2.24/modules/db/postgresql.go:52 +0x9e
2023-03-30T09:49:43.739665812Z github.com/GoAdminGroup/go-admin/modules/db.(*Postgresql).QueryWith(0x7fedcc37b768?, 0x7fedf3f0f5b8?, {0x1630314?, 0xc000080400?}, {0xc00045b800?, 0x0?}, {0xc000277220?, 0x8e4916?, 0x10?})
2023-03-30T09:49:43.739672840Z  /go/pkg/mod/github.com/!go!admin!group/go-admin@v1.2.24/modules/db/postgresql.go:74 +0x65
2023-03-30T09:49:43.739678702Z github.com/GoAdminGroup/go-admin/modules/db.(*SQL).All(0xc000442b40)
2023-03-30T09:49:43.739699812Z  /go/pkg/mod/github.com/!go!admin!group/go-admin@v1.2.24/modules/db/statement.go:442 +0x102
2023-03-30T09:49:43.740099312Z github.com/GoAdminGroup/go-admin/modules/auth.InitCSRFTokenSrv({0x1b87c70?, 0xc0002b61e0})
2023-03-30T09:49:43.740116344Z  /go/pkg/mod/github.com/!go!admin!group/go-admin@v1.2.24/modules/auth/auth.go:94 +0x235
2023-03-30T09:49:43.740123217Z github.com/GoAdminGroup/go-admin/engine.(*Engine).Use(0xc00010b360, {0x160c380, 0xc0004b4820})
2023-03-30T09:49:43.740134285Z  /go/pkg/mod/github.com/!go!admin!group/go-admin@v1.2.24/engine/engine.go:72 +0xf3
2023-03-30T09:49:43.740140103Z main.main()
2023-03-30T09:49:43.740145212Z  /app/app/main/main.go:57 +0x37d
解决方案

这个错误是因为go-admin依赖的核心系统表(包括goadmin_session)未在PostgreSQL数据库中创建,按以下步骤修复:

  • 确认数据库基础状态:先确保gorm_db数据库已创建,用户gorm拥有该数据库的建表、读写权限,避免因权限不足导致表无法生成。
  • 开启自动建表逻辑:在初始化go-admin engine时,添加Migrate()调用触发自动建表,修改初始化代码如下:
engine := engine.Default()
// 添加数据库配置后执行Migrate
if err := engine.AddDatabase(cfg).Migrate(); err != nil {
    log.Fatal(err)
}
// 后续执行Use、Run等操作
  • 手动建表(自动建表失败时):如果自动建表未生效,可手动执行SQL创建goadmin_session表(结构根据go-admin版本调整,以下为参考):
CREATE TABLE goadmin_session (
    id varchar(64) NOT NULL PRIMARY KEY,
    content text,
    created_at timestamp with time zone,
    updated_at timestamp with time zone
);

同时需确保go-admin所需的其他系统表(如goadmin_user、goadmin_menu等)也已创建,可从go-admin源码中提取对应SQL执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 10:02:54