Тайм-аут операции при переходе EF Core на PostgreSQL - PullRequest
0 голосов
/ 26 марта 2019

Я новичок в PostgreSQL и хочу использовать его с Identity Server 4. Я использую следующие пакеты NuGet: IdentityServer4, IdentityServer4.EntityFramework и Npgsql.EntityFrameworkCore.PostgreSQL

Я пытаюсь выполнить миграциюдля таблиц Identity Server в PostgreSQL.Я изменяю ConfigureServices в Startup.cs с помощью:

string connectionString = "Server=192.168.1.108; Port=5432; Database=postgres; User Id=postgres;Password=mysecretpassword";
var migrationsAssembly = typeof(Startup).GetTypeInfo().Assembly.GetName().Name;

services.AddIdentityServer()
        .AddConfigurationStore(options =>
        {
            options.ConfigureDbContext = builder =>
                builder.UseNpgsql(connectionString, action=>
                {
                    action.MigrationsAssembly(migrationsAssembly);
                });
        });

Когда я запускаю команду Add-Migration, я вижу, что VS готовит всю информацию о миграции для меня (я вижу все необходимые мне таблицы),но когда я запускаю команду Update-Database, я получаю странную ошибку:

Microsoft.EntityFrameworkCore.Infrastructure [10403] Entity Framework Core 2.1.4-rtm-31024 инициализировал «ConfigurationDbContext» с помощью провайдера «Npgsql».EntityFrameworkCore.PostgreSQL 'с параметрами: MigrationsAssembly = MangEx.Users System.TimeoutException: истекло время ожидания операции.в Npgsql.NpgsqlConnector.Connect (тайм-аут NpgsqlTimeout) в C: \ projects \ npgsql \ src \ Npgsql \ NpgsqlConnector.cs: строка 703 в Npgsql.NpgsqlConnector.RawOpen (NpgsqlTimeout в качестве тайм-аута для отмены \ выходных данных;npgsql \ src \ Npgsql \ NpgsqlConnector.cs: строка 555 в Npgsql.NpgsqlConnector.Open (тайм-аут NpgsqlTimeout, логический асинхронный, CancellationToken cancellationToken) в C: \ projects \ npgsql \ src \ Npgsl.lg: npgs.lg. <> c__DisplayClass32_0.d.MoveNext () в C: \ projects \ npgsql \ src \ Npgsql \ NpgsqlConnection.cs: строка 270 --- Конец трассировки стека из предыдущего расположения, где было сгенерировано исключение --- в Npgsql.NpgsqlConnection.Open () в C: \ projects \ npgsql \ src \ Npgsql \ NpgsqlConnection.cs: строка 153 в Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists () в C: \ projects \ EFCore.PG \ EOR.SGInternal \ NpgsqlDatabaseCreator.cs: строка 216 в Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists ()
в Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate (String targetMigration) в Microsoft.EntityFractionsOternal..UpdateDatabase (String targetMigration, String contextType) в Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase. <> C__DisplayClass0_1. <. Ctor> b__0 () в Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Exceptionout.

Я использую PostgreSQL через Docker, и это активный контейнер, плюс я запускаю pgAdmin4 в качестве контейнера Docker, и он видит контейнер PostgreSQL.

Возможно, мне не хватает чего-то тривиального, но, как я сказал, я совершенно новичок в PostgreSQL, поэтому яне могу точно определить причину этой ошибки.

Буду признателен за любые выводы.

1 Ответ

0 голосов
/ 26 марта 2019

Это была моя ошибка. Я запустил образ докера PostgreSQL, не открывая порт для внешнего мира. Когда я запустил этот образ с -p 5432: 5432, мне удалось перенести таблицы Identity Server в базу данных.

...