FluentMigrator / Postgres:启动数据包中没有指定PostgreSQL用户名

时间:2016-05-29 12:21:25

标签: c# .net postgresql mono fluent-migrator

尝试在我的开发/本地计算机上运行迁移时,运行正常:

mono packages/FluentMigrator.Tools.1.6.1/tools/AnyCPU/40/Migrate.exe -a Reflect.Web.v2.Migrations/bin/Debug/Reflect.Web.v2.Migrations.dll -db Postgres -conn "Server=localhost;Port=5432;Database=<redacted>;User Id=<redacted>;Password=<redacted>;CommandTimeout=20;" -profile "Debug"

输出:

[+] Using Database Postgres and Connection String Server=localhost;Port=5432;Database=<redacted>;User Id=<redacted>;Password=********;CommandTimeout=20;
[+] Task completed.

但是在生产中运行时:

mono /app/packages/FluentMigrator.Tools.1.6.1/tools/AnyCPU/40/Migrate.exe -a Reflect.Web.v2.Migrations.dll -db Postgres -conn "Server=dokku-postgres-reflectdb;Port=5432;Database=<redacted>;User Id=<redacted>;Password=<redacted>;CommandTimeout=20;" -profile "Release"

它抛出

[+] Using Database Postgres and Connection String Server=dokku-postgres-reflectdb
!!! FATAL: 28000: no PostgreSQL user name specified in startup packet
28000: no PostgreSQL user name specified in startup packet

我尝试在连接字符串中添加用户名参数,删除用户ID参数等,但无济于事。

您可以看到连接字符串不完全可见。不知何故,连接字符串在生产中无法正确解析。

有什么想法吗? : - )

1 个答案:

答案 0 :(得分:0)

我采用了不同的方法:我在迁移项目的app.config中运行Migrate.exe传递连接字符串的名称,而不是直接将连接字符串作为参数传递,如下所示:

SELECT StudentID, CourseID, 
    (SELECT Count(StudentID) FROM Register R 
    WHERE R.CourseID = Register.CourseID AND 
    R.QueueIndex <= Register.QueueIndex) AS QueueNr
FROM Register

这很有效。