C
C#2mo ago
Straws

Unable to create new Postgres Database with Ef Core

I'm running the following command below to create a Postgres database.
"dotnet ef database update --startup-project .\Api.Entry\Api.Entry.csproj --project .\Api.Infrastructure\Api.Infrastructure.csproj"
"dotnet ef database update --startup-project .\Api.Entry\Api.Entry.csproj --project .\Api.Infrastructure\Api.Infrastructure.csproj"
And I'm getting the following error
fail: Microsoft.EntityFrameworkCore.Database.Connection[20004]
An error occurred using the connection to database 'mydb' on server 'tcp://localhost:5432'.
An error occurred using the connection to database 'mydb' on server 'tcp://localhost:5432'.
Npgsql.NpgsqlException (0x80004005): No password has been provided but the backend requires one (in SASL/SCRAM-SHA-256)
at Npgsql.Internal.NpgsqlConnector.AuthenticateSASL(List`1 mechanisms, String username, Boolean async, CancellationToken cancellationToken)
at Npgsql.Internal.NpgsqlConnector.Authenticate(String username, NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)
at Npgsql.Internal.NpgsqlConnector.<Open>g__OpenCore|214_1(NpgsqlConnector conn, SslMode sslMode, NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)
at Npgsql.Internal.NpgsqlConnector.Open(NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)
at Npgsql.PoolingDataSource.OpenNewConnector(NpgsqlConnection conn, NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)
at Npgsql.PoolingDataSource.<Get>g__RentAsync|33_0(NpgsqlConnection conn, NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)
at Npgsql.NpgsqlConnection.<Open>g__OpenAsync|42_0(Boolean async, CancellationToken cancellationToken)
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 Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReader(RelationalCommandParameterObject parameterObject)
at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.GetAppliedMigrations()
at Npgsql.EntityFrameworkCore.PostgreSQL.Migrations.Internal.NpgsqlHistoryRepository.GetAppliedMigrations()
at Npgsql.EntityFrameworkCore.PostgreSQL.Migrations.Internal.NpgsqlMigrator.Migrate(String targetMigration)
at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String connectionString, String contextType)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabaseImpl(String targetMigration, String connectionString, String contextType)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.<>c__DisplayClass0_0.<.ctor>b__0()
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
No password has been provided but the backend requires one (in SASL/SCRAM-SHA-256)
fail: Microsoft.EntityFrameworkCore.Database.Connection[20004]
An error occurred using the connection to database 'mydb' on server 'tcp://localhost:5432'.
An error occurred using the connection to database 'mydb' on server 'tcp://localhost:5432'.
Npgsql.NpgsqlException (0x80004005): No password has been provided but the backend requires one (in SASL/SCRAM-SHA-256)
at Npgsql.Internal.NpgsqlConnector.AuthenticateSASL(List`1 mechanisms, String username, Boolean async, CancellationToken cancellationToken)
at Npgsql.Internal.NpgsqlConnector.Authenticate(String username, NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)
at Npgsql.Internal.NpgsqlConnector.<Open>g__OpenCore|214_1(NpgsqlConnector conn, SslMode sslMode, NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)
at Npgsql.Internal.NpgsqlConnector.Open(NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)
at Npgsql.PoolingDataSource.OpenNewConnector(NpgsqlConnection conn, NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)
at Npgsql.PoolingDataSource.<Get>g__RentAsync|33_0(NpgsqlConnection conn, NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)
at Npgsql.NpgsqlConnection.<Open>g__OpenAsync|42_0(Boolean async, CancellationToken cancellationToken)
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 Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReader(RelationalCommandParameterObject parameterObject)
at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.GetAppliedMigrations()
at Npgsql.EntityFrameworkCore.PostgreSQL.Migrations.Internal.NpgsqlHistoryRepository.GetAppliedMigrations()
at Npgsql.EntityFrameworkCore.PostgreSQL.Migrations.Internal.NpgsqlMigrator.Migrate(String targetMigration)
at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String connectionString, String contextType)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabaseImpl(String targetMigration, String connectionString, String contextType)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.<>c__DisplayClass0_0.<.ctor>b__0()
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
No password has been provided but the backend requires one (in SASL/SCRAM-SHA-256)
In the entry project which is where my appsetting is I have this connection string.
"ConnectionStrings": {
"mydb": "User Id=postgres;Server=localhost;Port=5432;Database=mydb;Password=password;"
}
"ConnectionStrings": {
"mydb": "User Id=postgres;Server=localhost;Port=5432;Database=mydb;Password=password;"
}
I've double checked the credential and they do work and I've also created the database manually and tried to apply the migration and it still spits out the same error. Anyone know why it saying it doesn't have the password?
3 Replies
jcotton42
jcotton422mo ago
Show where you provide the connection string to EF.
Straws
StrawsOP2mo ago
public static WebApplicationBuilder AddDatabaseConnections(this WebApplicationBuilder builder)
{
ArgumentNullException.ThrowIfNull(builder);

var connectionString = builder.Configuration.GetConnectionString("mydb");
Console.WriteLine(connectionString);
ArgumentException.ThrowIfNullOrEmpty(connectionString);

builder.Services.AddDbContext<MyDbContext>(opt =>
{
opt.UseNpgsql(connectionString);
});

return builder;
}
public static WebApplicationBuilder AddDatabaseConnections(this WebApplicationBuilder builder)
{
ArgumentNullException.ThrowIfNull(builder);

var connectionString = builder.Configuration.GetConnectionString("mydb");
Console.WriteLine(connectionString);
ArgumentException.ThrowIfNullOrEmpty(connectionString);

builder.Services.AddDbContext<MyDbContext>(opt =>
{
opt.UseNpgsql(connectionString);
});

return builder;
}
It looks like when it pull the connection string the password is truncated :/ I have no clue why its doing that
fey naomi [feɪ na'omiː]
Shouldn't that be Username=?

Did you find this page helpful?