Я пытаюсь запустить команду CLI dotnet ef database update
для своего кластера AWS Aurora MySql RDS. Просто для целей тестирования я жестко закодировал строку подключения, чтобы исключить загрузку конфигурации.
Когда я запускаю команду update
, мне выдается следующая ошибка:
Произошла ошибка при подключении к базе данных '' на сервере 'some-rds-cluster.abcdefg.us-east-2.rds.amazonaws.com'.
MySql.Data.MySqlClient.MySqlException (0x80004005): доступ запрещен для пользователя «bobby» @ «555.555.555.555» (с использованием пароля: YES)
в MySqlConnector.Core.ServerSession.ConnectAsync(ConnectionSettings cs, ILoadBalancer loadBalancer, IOBehavior ioBehavior, CancellationToken CancellationToken) в C:\projects\mysqlconnector\src\MySqlConnector\Core\ServerSession.cs:строка 333
Мой метод ConfigureServices
выглядит так:
public void ConfigureServices(IServiceCollection services)
{
services.AddOptions();
services.AddDbContextPool<AccountContext>(options =>
{
options.UseMySql("server=a-random-cluster.foobar.us-east-2.rds.amazonaws.com;database=SomeDbHere;user=abcdefg;password=abcdefg", contextOptionsBuilder =>
{
contextOptionsBuilder.ServerVersion(new Version(5, 7, 12), ServerType.MySql);
});
});
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
Я могу подключиться к кластеру с помощью MySql Workbench на моей локальной машине; команда update
CLI с того же компьютера не работает. Группа безопасности, подключенная к RDS, разрешает подключение трафика с моего IP-адреса (поэтому MySql Workbench подключается). Есть ли что-то конкретное с EF Core и Pomelo.EntityFrameworkCore.MySql, которое мне нужно сделать, чтобы интерфейс командной строки обновил таблицы? Поддерживает ли Aurora действия, необходимые EF Core для обновления модели данных, например использование другого номера порта по какой-либо причине?
Я заметил ошибку, связанную с использованием соединения с базой данных, и я не могу сказать, намеренно ли она оставила имя базы данных пустым или это часть проблемы. Однако БД указана в строке миграции и подключения, поэтому я предполагаю, что они не указывают имя БД, поскольку в MySql это не БД, а скорее схема.
Я использую aspnetcore 2.1.0 и EF core 2.1.0.
Я сгенерировал миграции из своих сущностей и контекстов, которые приведены ниже.
public partial class InitialMigration : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.EnsureSchema(
name: "SomeDbHere");
migrationBuilder.CreateTable(
name: "Users",
schema: "SomeDbHere",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation(
"MySql:ValueGenerationStrategy",
MySqlValueGenerationStrategy.IdentityColumn),
Username = table.Column<string>(nullable: true),
CognitoId = table.Column<string>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Users", x => x.Id);
});
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Users",
schema: "SomeDbHere");
}
}