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

Docker+Symfony7环境下PostgreSQL插入数据后Adminer无法查看

问题解决方案

1. 先解决User表查询异常的核心冲突

PostgreSQL中user是系统内置表(存储数据库用户信息),你的实体类命名为User会直接导致表名冲突,查询时优先返回系统表数据。

  • 修改实体类的表名,比如改为app_user:
    #[ORM\Entity(repositoryClass: UserRepository::class)]
    #[ORM\Table(name: 'app_user')]
    class User
    {
        // 其他代码保持不变
    }
    
  • 执行数据库迁移更新表结构:
    symfony console make:migration
    symfony console doctrine:migrations:migrate
    
  • 之后用命令行查询SELECT * FROM app_user就能看到自己插入的用户数据了。

2. 解决Adminer看不到数据的问题

命令行能查到但Adminer看不到,90%是数据库/模式连接不一致:

  • 核对Symfony数据库配置:打开.env或.env.local,确认DATABASE_URL的参数,重点看数据库名称、用户名、指定的schema:
    DATABASE_URL="postgresql://db_user:db_password@db:5432/db_name?serverVersion=16&charset=utf8mb4&schema=public"
    
  • 检查Adminer登录参数:登录时必须选择和Symfony配置完全一致的数据库名称、用户名,schema选public,不要误选PostgreSQL默认的postgres数据库。
  • 确认Docker网络一致性:确保Symfony、PostgreSQL、Adminer三个服务在同一个Docker网络中,docker-compose.yml配置示例:
    networks:
      app-net:
        driver: bridge
    
    services:
      db:
        image: postgres:16
        networks:
          - app-net
        # 其他配置
      adminer:
        image: adminer
        networks:
          - app-net
        # 其他配置
      php:
        build: ./php
        networks:
          - app-net
        # 其他配置
    
    不在同一网络会导致Adminer连接的是宿主机PostgreSQL(而非容器内的),数据自然不一致。

3. 处理ID生成策略弃用警告

Symfony 7中Doctrine部分旧ID生成策略已被弃用,直接指定适合PostgreSQL的策略即可:

#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'IDENTITY')]
#[ORM\Column(type: 'integer')]
private ?int $id = null;

修改后重新执行迁移命令更新表结构。

4. 关于localhost:5432无响应的问题

这是因为PostgreSQL容器没有把5432端口映射到宿主机,若不需要宿主机直接连接数据库,完全可以不用处理——Symfony和Adminer都是通过Docker网络访问容器内的5432端口,不影响正常使用。如果需要宿主机连接,在docker-compose.yml的db服务中添加端口映射:

services:
  db:
    image: postgres:16
    ports:
      - "5432:5432"
    # 其他配置

最后验证步骤

  1. 执行symfony console doctrine:schema:validate,确认实体和数据库表结构完全匹配。
  2. 重新插入测试数据,用命令行symfony console dbal:run-sql 'SELECT * FROM app_user'和SELECT * FROM post_event确认数据存在。
  3. 登录Adminer,选择正确的数据库和public模式,查询对应表,确认数据正常显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 12:43:24