sql >> Database >  >> RDS >> Mysql

EF Core `update-database` op MySql mislukt met `__EFMigrationsHistory' bestaat niet`

Dit is niet gerelateerd aan ASP.NET Identity of ASP.NET Core. Dit heeft te maken met het Entity Framework in het algemeen. Wanneer je een database bijwerkt, gebruikt EF de __EFMigrationsHistory om vast te leggen welke migraties zijn uitgevoerd, zodat deze in de toekomst niet opnieuw worden uitgevoerd.

Deze functionaliteit wordt geïmplementeerd door de databaseprovider , niet EF zelf. Er was ten minste één geval waarin de Npgsql-provider voor PostgresSQL de tabel niet heeft gemaakt .

De oplossing is eenvoudig - maak zelf de tafel:

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

UPDATE

Er was een andere vergelijkbare vraag in 2016. Dit is een bug van de officiële MySQL-provider. De oplossing is om de tabel te maken. Ook niet de enige. Asynchrone bewerkingen worden vervalst door ze bijvoorbeeld op een andere thread uit te voeren.

Ik raad je aan om externe MySQL-providers te onderzoeken, zoals Pomelo.EntityFrameworkCore.MySql . Ze gevonden en opgelost de bug in de migratiegeschiedenis 1 jaar geleden.

Aangezien de eigenaar van MySQL Oracle is , verwacht niet veel vooruitgang op de connector. Of de databank.




  1. MySQL CREATE FUNCTION Syntaxis

  2. Hoe kan ik een MySQL AutoIncrement resetten met een MAX-waarde uit een andere tabel?

  3. Het negeren van apostrofs in mysql-zoekopdrachten

  4. 2 manieren om alle functies in MariaDB weer te geven