Mysql
 sql >> Base de données >  >> RDS >> Mysql

EF Core `update-database` sur MySql échoue avec `__EFMigrationsHistory' n'existe pas`

Cela n'est pas lié à ASP.NET Identity ou ASP.NET Core. Ceci est lié à Entity Framework en général. Lorsque vous mettez à jour une base de données, EF utilise le __EFMigrationsHistory pour enregistrer les migrations exécutées afin qu'il ne les exécute plus à l'avenir.

Cette fonctionnalité est mise en œuvre par le fournisseur de base de données , pas EF lui-même. Il y a eu au moins un cas où le fournisseur Npgsql pour PostgresSQL n'a pas créé la table .

La solution est simple - créez vous-même le tableau :

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

MISE À JOUR

Il y en avait un autre question similaire en 2016. Il s'agit d'un bogue du fournisseur officiel de MySQL. La solution consiste à créer la table. Pas le seul non plus. Les opérations asynchrones sont truquées en les exécutant sur un thread différent par exemple.

Je vous suggère d'enquêter sur des fournisseurs MySQL tiers comme Pomelo.EntityFrameworkCore.MySql . Ils trouvés et corrigés le bogue de l'historique des migrations il y a 1 an.

Étant donné que le propriétaire de MySQL est Oracle , ne vous attendez pas à beaucoup de progrès sur le connecteur. Ou la base de données.