Docker容器内PostgreSQL找不到Liquibase创建的业务表如何解决
问题原因与解决方法
核心原因1:你查询的PostgreSQL实例、数据库和应用实际使用的不一致
- 应用Spring配置的JDBC URL为
jdbc:postgresql://localhost:5432/mark_authentication,连接的是宿主机5432端口的PostgreSQL实例下的mark_authentication库 - 你进入的是docker容器内的PostgreSQL实例,该实例端口映射为宿主机5433,默认创建的数据库是
authentication,和应用实际使用的实例、数据库完全无关。应用能正常运行说明服务器上还单独部署了一个5432端口的PostgreSQL服务,所有业务数据都存在这个服务里。
核心原因2:默认查询命令看不到自定义Schema下的表
你的Liquibase变更脚本明确指定了所有业务表都创建在users自定义Schema下,而PostgreSQL客户端默认的查询路径(search_path)仅包含public等默认Schema,直接执行\dt只会返回public Schema下的表,自然看不到业务表。
正确查询步骤
- 直接在服务器本地(不需要进Docker容器)执行命令连接应用实际使用的数据库:
psql -U postgres -d mark_authentication
输入密码postgres完成连接
2. 执行以下任意命令查看业务表:
- 直接查询
usersSchema下的所有表:
\dt users.*
- 临时修改当前会话的查询路径,之后执行
\dt即可同时看到users和public下的所有表:
SET search_path TO users, public; \dt
- 查看当前数据库所有Schema下的所有表:
\dt *.*
内容的提问来源于stack exchange,提问作者alex
相关产品推荐
相关产品推荐

