{"record":{"id":"1492b386b2088190","repo":"OrchardCMS/OrchardCore","slug":"unknown-database-provider","errorCode":null,"errorMessage":"Unknown database provider: ","messagePattern":"Unknown database provider: ","errorType":"exception","errorClass":"ArgumentException","httpStatus":null,"severity":"critical","filePath":"src/OrchardCore/OrchardCore.Data.YesSql/OrchardCoreBuilderExtensions.cs","lineNumber":101,"sourceCode":"\n                        var connectionString = SqliteHelper.GetConnectionString(sqliteOptions, databaseFolder, shellSettings);\n\n                        storeConfiguration\n                            .UseSqLite(connectionString, yesSqlOptions.IsolationLevel)\n                            .UseDefaultIdGenerator();\n                        break;\n                    case DatabaseProviderValue.MySql:\n                        storeConfiguration\n                            .UseMySql(shellSettings[\"ConnectionString\"], yesSqlOptions.IsolationLevel, shellSettings[\"Schema\"])\n                            .UseBlockIdGenerator();\n                        break;\n                    case DatabaseProviderValue.Postgres:\n                        storeConfiguration\n                            .UsePostgreSql(shellSettings[\"ConnectionString\"], yesSqlOptions.IsolationLevel, shellSettings[\"Schema\"])\n                            .UseBlockIdGenerator();\n                        break;\n                    default:\n                        throw new ArgumentException(\"Unknown database provider: \" + shellSettings[\"DatabaseProvider\"]);\n                }\n\n                if (!string.IsNullOrWhiteSpace(shellSettings[\"TablePrefix\"]))\n                {\n                    var tablePrefix = shellSettings[\"TablePrefix\"].Trim() + databaseTableOptions.TableNameSeparator;\n\n                    storeConfiguration.SetTablePrefix(tablePrefix);\n                }\n\n                var store = StoreFactory.Create(storeConfiguration);\n\n                var indexes = sp.GetServices<IIndexProvider>();\n\n                store.RegisterIndexes(indexes);\n\n                return store;\n            });\n","sourceCodeStart":83,"sourceCodeEnd":119,"githubUrl":"https://github.com/OrchardCMS/OrchardCore/blob/4306c0717fe573f6fca1b4955909ddab6a192807/src/OrchardCore/OrchardCore.Data.YesSql/OrchardCoreBuilderExtensions.cs#L83-L119","documentation":"AddDataAccess configures YesSql's store based on the tenant's DatabaseProvider shell setting via a switch statement. The default arm throws ArgumentException(\"Unknown database provider: <value>\") for any provider other than SqlConnection, MySql, Sqlite, or Postgres. This happens when building the tenant shell, so the tenant cannot start.","triggerScenarios":"Booting a tenant whose shellSettings[\"DatabaseProvider\"] is not one of the four supported values — e.g., empty string, \"none\", \"oracle\", or a legacy provider name in App_Data/Sites/*/appsettings.json.","commonSituations":"Provisioning tenants programmatically with a typo'd provider; copying tenant config between environments where a provider was renamed; deleting the DatabaseProvider key so it reads null.","solutions":["Set DatabaseProvider to exactly one of: SqlConnection, MySql, Sqlite, Postgres in the tenant's shell settings file.","If the tenant is mid-setup, re-run setup and choose a supported database provider in the wizard.","Validate the config programmatically (compare against DatabaseProviderValue constants) before starting the shell."],"exampleFix":"// before\nshellSettings[\"DatabaseProvider\"] = \"postgresql\";\n// after\nshellSettings[\"DatabaseProvider\"] = DatabaseProviderValue.Postgres;","handlingStrategy":"validation","validationCode":"var provider = shellSettings[\"DatabaseProvider\"];\nvar allowed = new[] { \"SqlConnection\", \"MySql\", \"Sqlite\", \"Postgres\" };\nif (string.IsNullOrWhiteSpace(provider) || !allowed.Contains(provider))\n    throw new InvalidOperationException($\"Invalid DatabaseProvider '{provider}' in tenant settings\");","typeGuard":null,"tryCatchPattern":"catch (ArgumentException ex) { logger.LogCritical(ex, \"Shell startup failed: unknown database provider\"); throw; }","preventionTips":["Provision tenants via the setup wizard or DatabaseProviderValue constants","Add config validation in CI that parses tenant sites files","Never leave DatabaseProvider empty in tenant appsettings"],"tags":["database","configuration","startup"],"backgroundTag":"unsupported-enum-value","analyzedSha":"4306c0717fe573f6fca1b4955909ddab6a192807","analyzedAt":"2026-09-13T17:41:05.024Z","contentChangedAt":"2026-09-13T17:41:05.024Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}