【问题标题】:System.Net.Sockets.SocketException (11001): No such host is knownSystem.Net.Sockets.SocketException (11001):没有这样的主机是已知的
【发布时间】:2021-12-08 10:18:43
【问题描述】:

API 和数据库都在 docker 容器中运行。我正在对数据库使用 postgresql DB 和实体框架代码优先方法。我可以做 add-migration 但是当我运行 remove-migration 时,我得到了一个奇怪的错误。异常详情如下所示:

Entity Framework Core 5.0.11 initialized 'DataContext' using provider 'Npgsql.EntityFrameworkCore.PostgreSQL' with options: MigrationsAssembly=Moodys.Ag.Ceres.Data MigrationsHistoryTable=public.__EFMigrationsHistory using snake-case naming  (culture=)
System.Net.Sockets.SocketException (11001): No such host is known.
   at System.Net.Dns.GetHostEntryOrAddressesCore(String hostName, Boolean justAddresses)
   at System.Net.Dns.GetHostAddresses(String hostNameOrAddress)
   at Npgsql.NpgsqlConnector.Connect(NpgsqlTimeout timeout)
   at Npgsql.NpgsqlConnector.RawOpen(NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)
   at Npgsql.NpgsqlConnector.Open(NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)
   at Npgsql.NpgsqlConnection.<>c__DisplayClass41_0.<<Open>g__OpenAsync|0>d.MoveNext()
--- End of stack trace from previous location ---
   at Npgsql.NpgsqlConnection.Open()
   at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenDbConnection(Boolean errorsExpected)
   at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenInternal(Boolean errorsExpected)
   at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open(Boolean errorsExpected)
   at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists(Boolean async, CancellationToken cancellationToken)
   at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists(Boolean async, CancellationToken cancellationToken)
   at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists()
   at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists()
   at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.GetAppliedMigrations()
   at Microsoft.EntityFrameworkCore.Migrations.Design.MigrationsScaffolder.RemoveMigration(String projectDir, String rootNamespace, Boolean force, String language)
   at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.RemoveMigration(String contextType, Boolean force)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.RemoveMigrationImpl(String contextType, Boolean force)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.RemoveMigration.<>c__DisplayClass0_0.<.ctor>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_0`1.<Execute>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
No such host is known.

【问题讨论】:

  • 请同时添加用于添加和删除迁移的命令。
  • @Ali Zeinali:“remove-migration”是包管理器控制台中使用的命令。

标签: postgresql entity-framework .net-core entity-framework-core ef-code-first


【解决方案1】:

我找到了一个使用remove-migration -Force 命令的临时解决方案。它会删除最后一个迁移文件并恢复模型快照。但它有警告,这仍然与我在问题中发布的错误有关。问题是 remove-migration 无法从给定主机连接到数据库并抛出“No such host is known”。

我仍在寻找不需要使用 -Force 的解决方案。因此,如果有人找到解决方案,请在此处发布。

谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 2019-06-15
    • 1970-01-01
    • 1970-01-01
    • 2021-03-20
    • 2021-04-21
    相关资源
    最近更新 更多