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

本地PostgreSQL连接Shlink Docker镜像后无数据表问题求助

排查步骤

1. 数据库名称不匹配

你的docker-compose.yml中配置的数据库名是SHLINK_DB_NAME: Shlink_db,但你登录数据库时用的是psql -U root -d shlink。PostgreSQL在Linux环境默认对数据库名称大小写敏感,二者明显不匹配:

  • 先执行psql -U root -l查看所有已存在的数据库,确认Shlink_db是否创建。
  • 如果Shlink_db确实存在,登录时需用psql -U root -d Shlink_db,再执行\dt查看表结构。

2. 空密码的权限问题

你的SHLINK_DB_PASSWORD字段为空,需确认两个点:

  • 本地PostgreSQL的root用户是否允许无密码登录。
  • 检查PostgreSQL的pg_hba.conf配置文件,是否存在允许root从host.docker.internal地址无密码访问的规则,示例规则(仅测试用,生产环境不建议):
    host    all             root            0.0.0.0/0               trust
    
    修改后需重启PostgreSQL服务生效。

3. 检查容器完整日志确认初始化状态

即使你说日志无报错,仍建议查看容器完整日志,确认Shlink是否真的完成了数据库连接和表初始化:

  • 执行命令:docker logs shlink
  • 查找包含database、migrate、schema的日志内容,确认是否有连接失败、权限不足等隐性问题。

4. Linux环境下host.docker.internal兼容性

如果是Linux系统,host.docker.internal默认无法直接使用,需在docker-compose.yml中添加额外配置:

services:
  shlink:
    # 保留原有配置
    extra_hosts:
      - "host.docker.internal:host-gateway"

添加后重启容器,再检查日志和数据库表。

5. 确认目标数据库已提前创建

Shlink不会自动创建数据库,需你手动在本地PostgreSQL中创建Shlink_db:

  • 登录PostgreSQL执行:CREATE DATABASE "Shlink_db";(引号保留,确保名称大小写与配置一致)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 19:15:06