初始添加迁移认为数据库已经是最新的

6za6bjd0  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(371)

我正在尝试在我的项目中完全重置ef核心代码优先迁移。我有一个很好的理由这样做(可以解释,如果需要),但我有一个很难让它工作。
我已经删除了以前的数据库并删除了项目中的旧迁移目录。
见下面的日志。大约四分之三的时候,你会看到ef认为数据库已经是最新的了。但是,您看到它在开始时创建了一个新的数据库吗?注意:我在日志末尾截断了很多,因为这只是堆栈跟踪错误,因为它找不到它认为已经存在的表。
关于如何重新创建新的初始迁移和更新数据库有什么指导吗?

PM> Add-Migration InitialCreate
Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[0]
      User profile is available. Using 'C:\Users\CollinB\AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest.
Microsoft.EntityFrameworkCore.Infrastructure[10403]
      Entity Framework Core 2.0.1-rtm-125 initialized 'FilterListsDbContext' using provider 'Pomelo.EntityFrameworkCore.MySql' with options: MaxPoolSize=128 MigrationsAssembly=FilterLists.Api 
Microsoft.EntityFrameworkCore.Database.Command[20101]
      Executed DbCommand (4ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      CREATE DATABASE `filterlistsdata`;
Microsoft.EntityFrameworkCore.Database.Command[20101]
      Executed DbCommand (33ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      CREATE TABLE `__EFMigrationsHistory` (
          `MigrationId` varchar(95) NOT NULL,
          `ProductVersion` varchar(32) NOT NULL,
          CONSTRAINT `PK___EFMigrationsHistory` PRIMARY KEY (`MigrationId`)
      );
Microsoft.EntityFrameworkCore.Database.Command[20101]
      Executed DbCommand (18ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='filterlistsdata' AND TABLE_NAME='__EFMigrationsHistory';
Microsoft.EntityFrameworkCore.Database.Command[20101]
      Executed DbCommand (4ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      SELECT `MigrationId`, `ProductVersion`
      FROM `__EFMigrationsHistory`
      ORDER BY `MigrationId`;
Microsoft.EntityFrameworkCore.Migrations[20405]
    **No migrations were applied. The database is already up to date.**
fail: Microsoft.EntityFrameworkCore.Database.Command[20102]
      Failed executing DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      SELECT CASE
          WHEN EXISTS (
              SELECT 1
              FROM `languages` AS `l`)
          THEN TRUE ELSE FALSE
      END
MySql.Data.MySqlClient.MySqlException (0x80004005): Table 'filterlistsdata.languages' doesn't exist ---> MySql.Data.MySqlClient.MySqlException (0x80004005): Table 'filterlistsdata.languages' doesn't exist
rur96b6h

rur96b6h1#

切勿手动删除迁移文件夹。它会让你省去很多头痛;首先使用代码来创建数据库,所以首先使用代码来删除。
首先,关闭visualstudio并重新打开它。然后再次尝试运行迁移。
如果这不起作用,此时最简单的方法是转到appsettings.json并更改数据库的名称。然后再次运行add migration并更新数据库。

vc6uscn9

vc6uscn92#

我想出来了。当我运行初始的add迁移时,我没有意识到应用程序实际上是在运行的。它运行的是我的一些种子代码,这导致它失败。暂时的评论,让我的初始创建运行。

相关问题