繁体   English   中英

EF Core迁移到PostgreSQL时该操作已超时

[英]The operation has timed out on EF Core migration to PostgreSQL

我是PostgreSQL的新手,我想将其与Identity Server 4一起使用。我正在使用下一个NuGet包:IdentityServer4,IdentityServer4.EntityFramework和Npgsql.EntityFrameworkCore.PostgreSQL

我正在尝试迁移PostgreSQL上的Identity Server表。 我正在使用以下命令修改Startup.cs中的ConfigureServices:

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]实体框架核心2.1.4-rtm-31024使用提供程序'Npgsql.EntityFrameworkCore.PostgreSQL'初始化了'ConfigurationDbContext',选项为:MigrationsAssembly = MangEx.Users System.TimeoutException:操作已超时。 在C:\\ projects \\中C:\\ projects \\ npgsql \\ src \\ Npgsql \\ NpgsqlConnector.cs:703行的Npgsql.NpgsqlConnector.Connect(NpgsqlTimeout timeout)处在C:\\ projects \\中的Npgsql.NpgsqlConnector.RawOpen(NpgsqlTimeout timeout,Boolean async,CancellationToken cancelToken) npgsql \\ src \\ Npgsql \\ NpgsqlConnector.cs:第555行位于Npgsql.NpgsqlConnector.Open(C:\\ projects \\ npgsql \\ src \\ Npgsql \\ NpgsqlConnector.cs:第414行位于Npgsql.NpgsqlConnection的C:\\ projects \\ npgsql \\ src \\ Npgsql \\ NpgsqlConnector.cs:line 414 。<> c__DisplayClass32_0。<g__OpenLong | 0> d.MoveNext()在C:\\ projects \\ npgsql \\ src \\ Npgsql \\ NpgsqlConnection.cs:line 270 ---从上一次引发异常的位置开始的堆栈跟踪-在C:\\ projects \\ npgsql \\ src \\ Npgsql \\ NpgsqlConnection.cs:N153中的Npgsql.NpgsqlConnection.Open()处,在C:\\ projects \\ EFCore中的Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists()处。 PG \\ src \\ EFCore.PG \\ Storage \\ Internal \\ NpgsqlDatabaseCreator.cs:Microsoft.EntityFrameworkCore.Migrations.HistoryRep的第216行 ository.Exists()
在Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase。<> c。 Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute上的<.ctor> b__0()(操作动作)操作已超时。

我通过Docker运行PostgreSQL,并且它是活动容器,另外我将pgAdmin4作为Docker容器运行,并且它正在查看PostgreSQL容器。

我可能缺少一些琐碎的东西,但是正如我所说的,我对PostgreSQL完全陌生,所以我无法查明此错误的原因。

我将不胜感激。

是我的错 我已经运行了PostgreSQL的docker镜像,而没有打开外部端口。 使用-p 5432:5432运行该映像时,已经设法将Identity Server表迁移到数据库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM