You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core执行dotnet ef database update报错:no such table: __EFMigrationsHistory

解决SQLite Error 1: 'no such table: __EFMigrationsHistory'问题

以下是几种可行的解决步骤,按顺序尝试:

步骤1:确认迁移已正确生成

如果你还没创建过迁移,先在终端执行:

dotnet ef migrations add InitialCreate

如果已经有迁移文件,检查Migrations目录下的迁移类Up方法,确认包含创建__EFMigrationsHistory表的逻辑(SQLite的EF Core迁移通常会自动生成这段代码)。

步骤2:手动创建__EFMigrationsHistory表

如果自动创建表失败,你可以手动用SQLite工具创建该表:

  1. 用sqlite3命令行或DB Browser for SQLite打开skinet.db文件
  2. 执行以下SQL语句:
CREATE TABLE "__EFMigrationsHistory" (
    "MigrationId" TEXT NOT NULL CONSTRAINT "PK___EFMigrationsHistory" PRIMARY KEY,
    "ProductVersion" TEXT NOT NULL
);
  1. 再次执行dotnet ef database update

步骤3:检查连接字符串路径

确认appsettings.development.json里的连接字符串指向正确的数据库文件位置:

  • 如果数据库文件在项目根目录,用Data Source=skinet.db或Data Source=./skinet.db
  • 如果是子目录,比如Data/skinet.db,要写Data Source=Data/skinet.db
    避免因找不到数据库文件导致表创建失败。

步骤4:重置迁移和数据库

如果以上方法都无效,直接重置:

  1. 删除项目中的Migrations文件夹
  2. 删除项目根目录下的skinet.db文件
  3. 重新生成迁移:dotnet ef migrations add InitialCreate
  4. 执行数据库更新:dotnet ef database update

小优化:给StoreContext构造函数添加类型约束

把StoreContext的构造函数改成带泛型的选项参数,更类型安全,避免潜在配置问题:

public StoreContext(DbContextOptions<StoreContext> options) : base(options)
{
}

内容的提问来源于stack exchange,提问作者A. F. M. Golam Kibria

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 17:05:04