我正在尝试在 .NET 应用程序中使用 Entity Framework Core 更新我的 PostgreSQL 数据库。但是,当我运行命令
dotnet ef database update
时,我得到一个 TimeoutException ,并带有以下堆栈跟踪。
错误消息和堆栈跟踪:
构建开始... 构建成功。 Npgsql.NpgsqlException (0x80004005):从流读取时出现异常 ---> System.TimeoutException:读取尝试期间超时 在 Npgsql.Internal.NpgsqlReadBuffer.g__EnsureLong|55_0(NpgsqlReadBuffer 缓冲区、Int32 计数、布尔异步、布尔读取通知) 在 System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1.StateMachineBox`1.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 令牌) 在 Npgsql.Internal.NpgsqlConnector.RawOpen(SslMode sslMode,NpgsqlTimeout 超时,布尔异步,CancellationToken CancelToken,布尔 isFirstAttempt) 在 Npgsql.Internal.NpgsqlConnector.g__OpenCore|213_1(NpgsqlConnector conn、SslMode sslMode、NpgsqlTimeout 超时、布尔异步、CancellationToken CancelToken、布尔 isFirstAttempt) 在 Npgsql.Internal.NpgsqlConnector.Open(NpgsqlTimeout 超时,布尔异步,CancellationToken 取消令牌) 在 Npgsql.UnpooledDataSource.Get(NpgsqlConnection conn、NpgsqlTimeout 超时、布尔异步、CancellationToken CancellationToken) 在 Npgsql.NpgsqlConnection.g__OpenAsync|42_0(布尔异步,CancellationToken CancellationToken) 在 Npgsql.NpgsqlConnection.Open() 在 Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenDbConnection(布尔错误预期) 在 Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenInternal(布尔错误预期) 在 Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open(布尔错误预期) 在 Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists(布尔异步,CancellationToken取消令牌) 在 Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists(布尔异步,CancellationToken取消令牌) 在 Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists() 在 Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists() 在 Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.GetAppliedMigrations() 在 Npgsql.EntityFrameworkCore.PostgreSQL.Migrations.Internal.NpgsqlMigrator.Migrate(字符串 targetMigration) 在Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(字符串targetMigration,字符串connectionString,字符串contextType) 在Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabaseImpl(字符串targetMigration,字符串connectionString,字符串contextType) 在 Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.c__DisplayClass0_0.b__0() 在 Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(操作操作) 从流读取时出现异常
连接字符串的代码示例:
{
"ConnectionStrings": {
"DefaultConnection" : "Host=MyIP; Port=6060; Database=test; Username=user; Password=password;"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
我使用的版本:
我尝试过的事情:
通常,超时来自于尝试连接到 sql 服务器。您的连接字符串是否包含所有必需的关键字? (例如,我看到“服务器”而不是“主机”和“端口”,“初始目录”而不是“数据库”)