Mysql
 sql >> Database >  >> RDS >> Mysql

EF Core `update-database` su MySql non riesce con `__EFMigrationsHistory' non esiste`

Questo non è correlato a ASP.NET Identity o ASP.NET Core. Questo è correlato a Entity Framework in generale. Quando aggiorni un database, EF utilizza __EFMigrationsHistory per registrare quali migrazioni sono state eseguite in modo da non eseguirle più in futuro.

Questa funzionalità è implementata dal fornitore di database , non EF stesso. Si è verificato almeno un caso in cui il provider Npgsql per PostgresSQL non ha creato la tabella .

La soluzione è semplice:crea tu stesso il tavolo:

CREATE TABLE `__EFMigrationsHistory` 
( 
    `MigrationId` nvarchar(150) NOT NULL, 
    `ProductVersion` nvarchar(32) NOT NULL, 
     PRIMARY KEY (`MigrationId`) 
);

AGGIORNAMENTO

Ce n'era un altro domanda simile nel 2016. Questo è un bug del provider MySQL ufficiale. La soluzione è creare la tabella. Neanche l'unico. Le operazioni asincrone vengono falsificate eseguendo, ad esempio, su un thread diverso.

Ti suggerisco di indagare su provider MySQL di terze parti come Pomelo.EntityFrameworkCore.MySql . Hanno trovato e corretto il bug della cronologia della migrazione 1 anno fa.

Dato che il proprietario di MySQL è Oracle , non aspettarti molti progressi sul connettore. O il database.