A valid connection string should be provided
- Dominant language
- No language data
- Stars
- 346
- Forks
- 67
- PR merge metrics
- No merged PRs in 30d
Description
**Describe the bug**
Using Azure Static Web Apps Cli with database connection. When running
`swa start ./src --swa-config-location config/local --data-api-location swa-db-connections/ --api-location api/`
I get the followiong error:
```
[dataApi] Unhandled exception. Azure.DataApiBuilder.Service.Exceptions.DataApiBuilderException: A valid Connection String should be provided.
[dataApi] ---> System.ArgumentException: Format of the initialization string does not conform to specification starting at index 0.
[dataApi] at System.Data.Common.DbConnectionOptions.GetKeyValuePair(String connectionString, Int32 currentPosition, StringBuilder buffer, Boolean useOdbcRules, String& keyname, String& keyvalue)
[dataApi] at System.Data.Common.DbConnectionOptions.ParseInternal(Dictionary`2 parsetable, String connectionString, Boolean buildChain, Dictionary`2 synonyms, Boolean firstKey)
[dataApi] at System.Data.Common.DbConnectionOptions..ctor(String connectionString, Dictionary`2 synonyms, Boolean useOdbcRules)
[dataApi] at System.Data.Common.DbConnectionStringBuilder.set_ConnectionString(String value)
[dataApi] at Microsoft.Data.SqlClient.SqlConnectionStringBuilder..ctor(String connectionString)
[dataApi] at Azure.DataApiBuilder.Config.RuntimeConfigLoader.GetConnectionStringWithApplicationName(String connectionString) in /_/src/Config/RuntimeConfigLoader.cs:line 200
[dataApi] --- End of inner exception stack trace ---
[dataApi] at Azure.DataApiBuilder.Config.RuntimeConfigLoader.GetConnectionStringWithApplicationName(String connectionString) in /_/src/Config/RuntimeConfigLoader.cs:line 204
[dataApi] at Azure.DataApiBuilder.Config.RuntimeConfigLoader.TryParseConfig(String json, RuntimeConfig& config, ILogger logger, String connectionString, Boolean replaceEnvVar, String dataSourceName, Dictionary`2 datasourceNameToConnectionString, EnvironmentVariableReplacementFailureMode replacementFailureMode) in /_/src/Config/RuntimeConfigLoader.cs:line 110
[dataApi] at Azure.DataApiBuilder.Config.FileSystemRuntimeConfigLoader.TryLoadConfig(String path, RuntimeConfig& config, Boolean replaceEnvVar) in /_/src/Config/FileSystemRuntimeConfigLoader.cs:line 80
[dataApi] at Azure.DataApiBuilder.Config.FileSystemRuntimeConfigLoader.TryLoadKnownConfig(RuntimeConfig& config, Boolean replaceEnvVar) in /_/src/Config/FileSystemRuntimeConfigLoader.cs:line 103
[dataApi] at Cli.ConfigGenerator.TryStartEngineWithOptions(StartOptions options, FileSystemRuntimeConfigLoader loader, IFileSystem fileSystem) in /_/src/Cli/ConfigGenerator.cs:line 1037
[dataApi] at Cli.Commands.StartOptions.Handler(ILogger logger, FileSystemRuntimeConfigLoader loader, IFileSystem fileSystem) in /_/src/Cli/Commands/StartOptions.cs:line 41
[dataApi] at Cli.Program.<>c__DisplayClass2_0.b__4(StartOptions options) in /_/src/Cli/Program.cs:line 60
[dataApi] at CommandLine.ParserResultExtensions.WithParsed[T](ParserResult`1 result, Action`1 action)
[dataApi] at Cli.Program.Execute(String[] args, ILogger cliLogger, IFileSystem fileSystem, FileSystemRuntimeConfigLoader loader) in /_/src/Cli/Program.cs:line 56
[dataApi] at Cli.Program.Main(String[] args) in /_/src/Cli/Program.cs:line 41
[dataApi] Aborted
```
**Expected behavior**
The server should start normally.
**Additional context**
Relevant part of the swa-db config:
```
{
"$schema": "https://github.com/Azure/data-api-builder/releases/latest/download/dab.draft.schema.json",
"data-source": {
"database-type": "mssql",
"connection-string": "@env('DATABASE_CONNECTION_STRING')",
"options": {
"set-session-context": true
}
},
```
The environment variable for the database is configured correctly, it worked yesterday and I didn't change it. I just copied it from Azure and put in the right password.
Contributor guide
No contributing guide indexed for this repository
Research direction
Reproduce the `swa start ./src --swa-config-location config/local --data-api-location swa-db-connections/ --api-location api/` command with the shown data-api configuration. Start in `src/Config/RuntimeConfigLoader.cs`, then follow `src/Config/FileSystemRuntimeConfigLoader.cs` and `src/Cli/ConfigGenerator.cs` to inspect how `DATABASE_CONNECTION_STRING` is loaded and parsed. Done means the server starts normally with the configured connection string.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- azure, sql
- Domain
- api, cli, database
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100