Azure App Service 提供了一個應用內的MySQL,可以供測試、開發使用。 前提條件是需要使用Windows的操作系統。 創建完App Server 之後,只需要在設置下開啟 MySQL In App 即可。 在應用中可以從環境變數中獲取連接字元串。 var mysqlconnstr ...
Azure App Service 提供了一個應用內的MySQL,可以供測試、開發使用。
前提條件是需要使用Windows的操作系統。
創建完App Server 之後,只需要在設置下開啟 MySQL In App 即可。
在應用中可以從環境變數中獲取連接字元串。
var mysqlconnstr = Environment.GetEnvironmentVariable("MYSQLCONNSTR_localdb")
但是Azure提供的連接字元串是一些格式:
Database={database};Data Source={host}:{port};User Id={username};Password={password}
看起來沒有多大的問題,但是如果直接使用,則會拋出錯誤, Unable to connect to any of the specified MySQL hosts.
。
其實正常情況下的連接字元串是如下格式的:
Database={database};Data Source={host},{port};User Id={username};Password={password}
這麼對比,就看得出問題所在,就是Data Source
中,host和port的分隔符的差異。
最快捷的方法只需要吧,:
替換成,
即可。
mysqlconnstr = mysqlconnstr.Replace(':', ',')
或者稍微封裝一下:
即可使用
builder.Services.AddDbContext<MySqlDbContext>(options =>
{
options.UseMySQL(AzureAppServiceMysqlConnectionParser.Parse(mysqlConnstr));
});
一些其他的小TIPS:
- 直接點擊MySQL In App 頁面上的
管理
鏈接,可以直接打開 phpMyAdmin,線上管理MySQL資料庫
- 通過
開發工具
下控制台
或者高級工具
,在C:\home\data\mysql\MYSQLCONNSTR_localdb.txt
可以獲取上面連接字元串的值。
- Announcing Azure App Service MySQL in-app (preview)
- Moving your database to the “MySQL in App” option in Azure