{"record":{"id":"214c83595dbcf374","repo":"nopSolutions/nopCommerce","slug":"this-database-provider-does-not-support-backup-214c83","errorCode":null,"errorMessage":"This database provider does not support backup","messagePattern":"This database provider does not support backup","errorType":"exception","errorClass":"DataException","httpStatus":null,"severity":"error","filePath":"src/Libraries/Nop.Data/DataProviders/PostgreSqlDataProvider.cs","lineNumber":263,"sourceCode":"    {\n        var currentIdent = await GetTableIdentAsync<TEntity>();\n        if (!currentIdent.HasValue || ident <= currentIdent.Value)\n            return;\n\n        using var currentConnection = CreateDataConnection();\n\n        var seqName = GetSequenceName<TEntity>(currentConnection);\n\n        await currentConnection.ExecuteAsync($\"select setval('{seqName}', {ident}, false);\");\n    }\n\n    /// <summary>\n    /// Creates a backup of the database\n    /// </summary>\n    /// <returns>A task that represents the asynchronous operation</returns>\n    public virtual Task BackupDatabaseAsync(string fileName)\n    {\n        throw new DataException(\"This database provider does not support backup\");\n    }\n\n    /// <summary>\n    /// Inserts record into table. Returns inserted entity with identity\n    /// </summary>\n    /// <param name=\"entity\"></param>\n    /// <typeparam name=\"TEntity\"></typeparam>\n    /// <returns>Inserted entity</returns>\n    public override TEntity InsertEntity<TEntity>(TEntity entity)\n    {\n        using var dataContext = CreateDataConnection();\n        try\n        {\n            entity.Id = dataContext.InsertWithInt32Identity(entity);\n        }\n        // Ignore when we try insert foreign entity via InsertWithInt32IdentityAsync method\n        catch (LinqToDBException ex) when (ex.Message.StartsWith(\"Identity field must be defined for\"))\n        {","sourceCodeStart":245,"sourceCodeEnd":281,"githubUrl":"https://github.com/nopSolutions/nopCommerce/blob/64bdf2ff08c8b39e65717bcf974fb43dc2ef68f2/src/Libraries/Nop.Data/DataProviders/PostgreSqlDataProvider.cs#L245-L281","documentation":"PostgreSqlDataProvider.BackupDatabaseAsync is an unimplemented stub that throws DataException. pg_dump-based backups are not exposed through the provider contract, so any backup call on PostgreSQL fails. Only MsSqlDataProvider implements a real backup.","triggerScenarios":"Maintenance/admin code calls dataProvider.BackupDatabaseAsync(fileName) while DataSettings.DataProvider is PostgreSQL. The method body throws immediately; fileName is unused.","commonSituations":"Generic backup routine run against the INopDataProvider contract without checking provider type; admin 'Backup' button clicked on a PostgreSQL deployment; migrated from SQL Server without changing tooling.","solutions":["Only call BackupDatabaseAsync for SQL Server; branch on DataProviderType.","For PostgreSQL use pg_dump / pg_back / cloud snapshot tooling outside the app.","Disable the backup UI for non-SQL-Server providers."],"exampleFix":"// before\nawait dataProvider.BackupDatabaseAsync(path);\n\n// after\nif (DataSettings.DataProvider == DataProviderType.SqlServer)\n    await dataProvider.BackupDatabaseAsync(path);\nelse\n    throw new NotSupportedException($\"Backup not supported for {DataSettings.DataProvider}; use pg_dump.\");","handlingStrategy":"validation","validationCode":"if (DataSettings.DataProvider != DataProviderType.SqlServer)\n    throw new NotSupportedException(\"Backup via API is supported only for SQL Server.\");\nawait dataProvider.BackupDatabaseAsync(path);","typeGuard":"static bool SupportsApiBackup(DataProviderType t) => t == DataProviderType.SqlServer;","tryCatchPattern":"try { await dataProvider.BackupDatabaseAsync(path); }\ncatch (DataException ex) when (ex.Message.Contains(\"does not support backup\"))\n{ /* use pg_dump / cloud snapshot for PostgreSQL */ }","preventionTips":["Gate backup on provider type; only SQL Server via the API.","Use pg_dump for PostgreSQL backups.","Disable backup UI for PostgreSQL deployments."],"tags":["database","postgresql","backup","unsupported-operation","nopcommerce"],"backgroundTag":null,"analyzedSha":"64bdf2ff08c8b39e65717bcf974fb43dc2ef68f2","analyzedAt":"2026-08-13T21:19:38.062Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}