NpgsqlException: «Неизвестный код сообщения: 74» при обновлении базы данных do tnet ef - PullRequest
0 голосов
/ 21 июня 2020

Когда я впервые попытался обновить (построить таблицы из моделей) базу данных PostgreSQL, я поймал это исключение:

dotnet ef database update

Npg sql .NpgsqlException (0x80004005): Неизвестный код сообщения: 74 в Npg sql .Util.PGUtil.ValidateBackendMessageCode (код BackendMessageCode) в C: \ projects \ npgsql \ src \ Npgsql \ Util \ PGUtil.cs: строка 63 в Npg sql .Npgsql. <> c__DisplayClass160_0. d.MoveNext () в C: \ projects \ npgsql \ src \ Npgsql \ NpgsqlConnector.cs: строка 894 --- Конец трассировки стека из предыдущего места, где было сгенерировано исключение --- в Npg sql .NpgsqlConnector. Аутентифицировать (String username, NpgsqlTimeout timeout, Boolean asyn c) в C: \ projects \ npgsql \ src \ Npgsql \ NpgsqlConnector.Auth.cs: строка 22 в Npg sql .NpgsqlConnector.Open (NpgsqlConnector.Open (NpgsqlConnector.Open (NpgsqlTimeoutqlT asyn c, CancellationToken cancellationToken) в C: \ projects \ npgsql \ src \ Npgsql \ NpgsqlConnector.cs: строка 393 в Npg sql .NpgsqlConnection. <> c__DisplayClass32_0. d.MoveNext () в C: \ projects \ npgsql \ src \ Npgsql \ NpgsqlConnection.cs: строка 241 --- Конец трассировки стека из предыдущего места, где было сгенерировано исключение --- в Npg sql .NpgsqlConnection. Open () в C: \ projects \ npgsql \ src \ Npgsql \ NpgsqlConnection.cs: строка 119 в Npg sql .EntityFrameworkCore. PostgreSQL .Storage.Internal.NpgsqlDatabaseCreator.Exists () в Microsoft.EntityFrameworkCore. .HistoryRepository.Exists () в Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate (String targetMigration) в Microsoft.EntityFrameworkCore.Design.Internal.MigperationOperations.UpdateDatabase (String targetMigration, String contextType) в Microsoft.EntityFramework. UpdateDatabaseImpl (String targetMigration, String contextType) в Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase. <> C__DisplayClass0_0. <. Ctor> b__0 () в Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.OperationExecutor.OperationBase. 74

* 1 006 *

к сожалению, я не смог найти никакой подсказки об этом исключении, и, как видите, исключение совершенно неясно.

1 Ответ

1 голос
/ 21 июня 2020

После нескольких часов исследования и чтения похожих ошибок и изучения исходного кода PGUtil.cs , я заподозрил проблему со связью.

И Bin go. root проблема заключалась в неправильном номере порта , совершенном моим коллегой.

public class IdentityResourceContextFactory : IDesignTimeDbContextFactory<IdentityResourceContext>
    {
        public IdentityResourceContext CreateDbContext(string[] args)
        {
            var optionsBuilder = new DbContextOptionsBuilder<IdentityResourceContext>();
            optionsBuilder.UseNpgsql("Username=postgres;Password=p@$$word;Host=localhost;Port=3306;Database=Identity;");

            return new IdentityResourceContext(optionsBuilder.Options);
        }
    }

Когда я изменил номер порта на правильный, все прошло хорошо:

Username=postgres;Password=p@$$word;Host=localhost;Port=5432;Database=Identity;

Я знаю, что это может быть совершенно не связано с сообщением об исключении, и поэтому делюсь им здесь.

...