如何在PostgreSQL连接字符串中指定目标schema名称
PostgreSQL连接指定Configurator schema的配置方法
迁移默认在public schema建表,是因为Npgsql驱动默认的schema搜索路径优先匹配public,直接在连接字符串中添加Search Path参数指定目标schema即可,同时你现有连接字符串有两处PostgreSQL不兼容的错误需要修正:
- 端口配置的分隔符错误:
Port:5432要改为Port=5432,连接字符串的键值对统一用等号分隔 Trusted_Connection=True是SQL Server专属的认证参数,PostgreSQL的Npgsql驱动不识别该配置,直接删除即可
修正后的完整配置如下:
"ConnectionStrings": { "DefaultConnection": "Server=localhost;Database=JHI_Configure;Port=5432;User ID=sa;Password=test1;Search Path=Configurator;" }
补充说明:如果业务需要同时访问多个schema,可以在
Search Path后按优先级写多个schema名称,用逗号分隔即可,例如Search Path=Configurator,public,驱动会优先查找Configurator下的数据库对象,找不到时再去public中匹配。
如果配置完连接字符串后迁移依然默认走public,说明你使用的ORM框架(比如EF Core)有更高优先级的schema配置,需要在ORM层单独指定默认schema,以EF Core为例,需要在上下文类的OnModelCreating方法中添加配置:
protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.HasDefaultSchema("Configurator"); // 其余模型配置 }
内容的提问来源于stack exchange,提问作者Rupak
相关产品推荐
相关产品推荐

