Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

EF Core `update-database` no MySql falha com `__EFMigrationsHistory' não existe`


Isso não está relacionado ao ASP.NET Identity ou ao ASP.NET Core. Isso está relacionado ao Entity Framework em geral. Quando você atualiza um banco de dados, o EF usa o __EFMigrationsHistory para registrar quais migrações foram executadas para que não as execute novamente no futuro.

Esta funcionalidade é implementada pelo provedor de banco de dados , não EF em si. Houve pelo menos um caso em que o provedor Npgsql para PostgresSQL não criou a tabela .

A solução é fácil - crie você mesmo a tabela:
CREATE TABLE `__EFMigrationsHistory` 
( 
    `MigrationId` nvarchar(150) NOT NULL, 
    `ProductVersion` nvarchar(32) NOT NULL, 
     PRIMARY KEY (`MigrationId`) 
);

ATUALIZAÇÃO

Havia outro pergunta semelhante em 2016. Este é um bug do provedor oficial do MySQL. A correção é criar a tabela. Também não é o único. As operações assíncronas são falsificadas executando-as em um thread diferente, por exemplo.

Eu sugiro que você investigue provedores MySQL de terceiros como Pomelo.EntityFrameworkCore.MySql . Eles encontraram e corrigiram o bug do histórico de migração há 1 ano.

Dado que o proprietário do MySQL é Oracle , não espere muito progresso no conector. Ou o banco de dados.