首页 > 解决方案 > NetCore NpgsqlConnection 无法连接到 MacOs 上 docker 容器内的 psql

问题描述

我正在编写一个 .net 应用程序来连接到在 docker 容器内运行的 postgres 数据库。
系统:MacOs Big Sur with M1 芯片和.NetCore 3.1
连接数据库的代码:

var cs = "Host=localhost;Username=postgres;Database=postgres;Port=5432"
using var con = new NpgsqlConnection(cs);
con.Open();

这会产生以下错误:

ERR 11] 28000:角色“postgres”不存在

该错误使我认为它正在尝试连接到我的本地计算机而不是在本地计算机上运行的 docker
为了调查我尝试直接从终端通过 psql 连接的问题:
psql -h localhost -p 5432 -U postgres
这会产生相同的错误;
根据this page,容器内的连接应该提到ip(-h localhost),所以psql将使用docker暴露的TCP端口而不是连接到本地psql,但似乎这不会发生。
知道如何使用 c# 在 docker 容器内创建 psql 连接吗?

标签: c#.netpostgresqldocker

解决方案


推荐阅读