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

.NET Core 6执行EF迁移报错:FUNCTION test.OBJECT_ID不存在

问题原因分析:FUNCTION test.OBJECT_ID does not exist

这个错误的核心是EF Core生成了SQL Server专属的SQL语法——OBJECT_ID是SQL Server用于检查数据库对象(比如表)是否存在的函数,但MySQL中没有这个函数,因此执行迁移命令时触发报错。

具体导致该问题的常见原因如下:

  • 未安装/配置MySQL对应的EF Core提供程序
    你可能缺少MySQL专属的EF Core NuGet包(比如Pomelo.EntityFrameworkCore.MySql或官方的MySql.EntityFrameworkCore),或者在配置DbContext时错误使用了SQL Server的提供方法(UseSqlServer),导致EF Core默认生成SQL Server语法的SQL语句。

  • 连接字符串配置不符合MySQL规范
    如果连接字符串使用了SQL Server的格式(例如包含Server=、Database=等参数但未正确适配MySQL),EF Core无法识别目标数据库类型,会默认采用SQL Server的语法生成逻辑。MySQL的标准连接字符串格式应为:

    Server=localhost;Database=test;Uid=root;Pwd=your_password;
    
  • DbContext服务注册错误
    在.NET 6的Program.cs中注册DbContext时,若未调用UseMySql方法指定MySQL提供程序,会导致EF Core使用默认的SQL Server提供程序。错误示例:

    builder.Services.AddDbContext<MyDbContext>(options =>
        options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));
    

    正确的注册方式(以Pomelo提供程序为例):

    builder.Services.AddDbContext<MyDbContext>(options =>
        options.UseMySql(
            builder.Configuration.GetConnectionString("DefaultConnection"),
            ServerVersion.AutoDetect(builder.Configuration.GetConnectionString("DefaultConnection"))
        ));
    

错误日志引用

PM> dotnet ef database update Build started... Build succeeded. info:
Microsoft.EntityFrameworkCore.Database.Command[20101]
Executed DbCommand (56ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
SELECT 1 fail: Microsoft.EntityFrameworkCore.Database.Command[20102]
Failed executing DbCommand (19ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
SELECT OBJECT_ID(N'[__EFMigrationsHistory]'); Failed executing DbCommand (19ms) [Parameters=[], CommandType='Text',
CommandTimeout='30'] SELECT OBJECT_ID(N'[__EFMigrationsHistory]');
MySqlConnector.MySqlException (0x80004005): FUNCTION test.OBJECT_ID
does not exist at
MySqlConnector.Core.ResultSet.ReadResultSetHeaderAsync(IOBehavior
ioBehavior) in //src/MySqlConnector/Core/ResultSet.cs:line 43 at
MySqlConnector.MySqlDataReader.ActivateResultSet(CancellationToken
cancellationToken) in /
/src/MySqlConnector/MySqlDataReader.cs:line
130 at
MySqlConnector.MySqlDataReader.CreateAsync(CommandListPosition
commandListPosition, ICommandPayloadCreator payloadCreator,
IDictionary2 cachedProcedures, IMySqlCommand command, CommandBehavior behavior, Activity activity, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlDataReader.cs:line 468 at MySqlConnector.Core.CommandExecutor.ExecuteReaderAsync(IReadOnlyList1
commands, ICommandPayloadCreator payloadCreator, CommandBehavior
behavior, Activity activity, IOBehavior ioBehavior, CancellationToken
cancellationToken) in
//src/MySqlConnector/Core/CommandExecutor.cs:line 56 at
MySqlConnector.MySqlCommand.ExecuteScalarAsync(IOBehavior ioBehavior,
CancellationToken cancellationToken) in
/
/src/MySqlConnector/MySqlCommand.cs:line 316 at
MySqlConnector.MySqlCommand.ExecuteScalar() in
/_/src/MySqlConnector/MySqlCommand.cs:line 110 at
Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalar(RelationalCommandParameterObject
parameterObject) at
Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists()

at
Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String
targetMigration) at
Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String
targetMigration, String connectionString, String contextType) at
Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabaseImpl(String
targetMigration, String connectionString, String contextType) at
Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.<>c__DisplayClass0_0.<.ctor>b__0()
at
Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action
action) FUNCTION test.OBJECT_ID does not exist PM>

内容的提问来源于stack exchange,提问作者Lilian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 01:55:02