nopSolutions/nopCommerce · critical · Exception
Unable to connect to the new database. Please try one more t
Error message
Unable to connect to the new database. Please try one more time
What it means
PostgreSqlDataProvider.CreateDatabase retries DatabaseExists() up to triesToConnect times (1s apart) after issuing CREATE DATABASE; if the new database is still not connectable on the final attempt it throws a bare Exception. On success it additionally installs the citext and pgcrypto extensions. This blocks the nopCommerce installer.
Source
Thrown at src/Libraries/Nop.Data/DataProviders/PostgreSqlDataProvider.cs:154
var command = connection.CreateCommand();
command.CommandText = query;
command.Connection.Open();
command.ExecuteNonQuery();
}
//try connect
if (triesToConnect <= 0)
return;
//sometimes on slow servers (hosting) there could be situations when database requires some time to be created.
//but we have already started creation of tables and sample data.
//as a result there is an exception thrown and the installation process cannot continue.
//that's why we are in a cycle of "triesToConnect" times trying to connect to a database with a delay of one second.
for (var i = 0; i <= triesToConnect; i++)
{
if (i == triesToConnect)
throw new Exception("Unable to connect to the new database. Please try one more time");
if (!DatabaseExists())
Thread.Sleep(1000);
else
{
builder.Database = databaseName;
using var connection = GetInternalDbConnection(builder.ConnectionString) as NpgsqlConnection;
var command = connection.CreateCommand();
command.CommandText = "CREATE EXTENSION IF NOT EXISTS citext; CREATE EXTENSION IF NOT EXISTS pgcrypto;";
command.Connection.Open();
command.ExecuteNonQuery();
connection.ReloadTypes();
break;
}
}
}
View on GitHub (pinned to 64bdf2ff08)
Solutions
- Increase triesToConnect so the poll loop tolerates slower provisioning.
- Verify the PostgreSQL role has CREATEDB and CONNECT privileges and that citext/pgcrypto are available/installable.
- Confirm host, port 5432 reachability, and credentials; test an external psql connect first.
- Pre-create the database and the citext/pgcrypto extensions manually, then run installation.
Example fix
// before dataProvider.CreateDatabase(dbName, triesToConnect: 5); // after dataProvider.CreateDatabase(dbName, triesToConnect: 30);
Defensive patterns
Strategy: retry
Validate before calling
// Pre-flight: confirm PostgreSQL reachable and role can connect
if (!dataProvider.DatabaseExists())
throw new InvalidOperationException("Cannot reach PostgreSQL; check connection string and role privileges."); Try / catch
try { dataProvider.CreateDatabase(dbName, triesToConnect: 30); }
catch (Exception ex) when (ex.Message.Contains("Unable to connect to the new database"))
{ /* verify role CREATEDB/CONNECT, citext/pgcrypto availability, port 5432, then retry */ } Prevention
- Confirm the role has CREATEDB/CONNECT and can CREATE EXTENSION citext, pgcrypto.
- Use a generous triesToConnect on slow hosting.
- Pre-create the database and extensions manually if provisioning is unreliable.
When it happens
Trigger: Installation calls dataProvider.CreateDatabase(databaseName, triesToConnect) against PostgreSQL where the server is slow to make the new database connectable, or where the role lacks permission to create/connect, within the retry budget.
Common situations: PostgreSQL on constrained hosting with provisioning lag; role without CREATEDB/CONNECT privileges so DatabaseExists always fails; missing citext/pgcrypto extensions and the role cannot CREATE EXTENSION; wrong host/port/firewall blocking 5432.
Related errors
- Unable to connect to the new database. Please try one more t
- Unable to connect to the new database. Please try one more t
- This database provider does not support backup
- Data provider supports connection only with login and passwo
- This database provider does not support backup
AI-assisted analysis of nopSolutions/nopCommerce@64bdf2ff08 (2026-08-13).
Data as JSON: /api/errors/93d0f9b0145e09e9.
Report an issue: GitHub.