尝试在我的开发/本地计算机上运行迁移时,运行正常:
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参数等,但无济于事。
您可以看到连接字符串不完全可见。不知何故,连接字符串在生产中无法正确解析。
有什么想法吗? : - )
答案 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
这很有效。