提问人:Gevorg Danielyan 提问时间:8/23/2023 最后编辑:Amit JoshiGevorg Danielyan 更新时间:8/23/2023 访问量:48
从 bin/Debug 文件夹启动时出现 Fluent 迁移器错误
Fluent migrator error on start from bin/Debug folder
问:
我有 API,我在其中使用 FluentMigrator 进行 Dapper 迁移。现在,当我尝试从 bin 文件夹运行构建的 .exe 时,出现异常:
2023-08-23 11:46:49.480 [INF] 1:_1_InitialMigration迁移
!!!无连接处理器不支持该方法
2023-08-23 11:46:49.487 [FTL] 致命错误
System.NotImplementedException:无连接处理器不支持方法
在 FluentMigrator.Runner.Processors.ConnectionlessProcessor.SchemaExists (字符串 schemaName)
在 FluentMigrator.Builders.Schema.Schema.SchemaSchemaQuery.Exists()
在SMC。Backup.Infrastructure.Database.Migrations._1_InitialMigration.Up() 在 D:\ProtelionProjects\smc-backup\Source\SMC 中。Backup.Infrastructure\Database\Migrations\1_InitialMigration.cs:第 17 行
在 FluentMigrator.MigrationBase.GetUpExpressions (IMigrationContext 上下文)
在 FluentMigrator.Runner.MigrationRunner.<>c.b__69_0 (IMigration m, IMigrationContext c)
在 FluentMigrator.Runner.MigrationRunner.ExecuteMigration(IMigration 迁移、Action1 参数、签名 sig、 布尔构造函数、 Boolean wrapExceptions)
在 System.Reflection.RuntimeMethodInfo.Invoke (对象 obj、 BindingFlags invokeAttr、 活页夹绑定器、 对象 [] 参数、 CultureInfo 区域性)
在 Microsoft.AspNetCore.Hosting.ConfigureBuilder.Invoke(对象实例,IApplicationBuilder 生成器)
在 Microsoft.AspNetCore.Hosting.ConfigureBuilder.<>c__DisplayClass4_0.b__0 (IApplicationBuilder builder)2 getExpressions) at FluentMigrator.Runner.MigrationRunner.ApplyMigrationUp(IMigrationInfo migrationInfo, Boolean useTransaction) at FluentMigrator.Runner.MigrationRunner.MigrateUp(Int64 targetVersion, Boolean useAutomaticTransactionManagement) at FluentMigrator.Runner.MigrationRunner.MigrateUp(Boolean useAutomaticTransactionManagement) at FluentMigrator.Runner.MigrationRunner.MigrateUp() at SMC.Backup.Infrastructure.ServiceCollectionExtensions.Migrate(IApplicationBuilder app) in D:\ProtelionProjects\smc-backup\Source\SMC.Backup.Infrastructure\ServiceCollectionExtensions.cs:line 62 at SMC.Backup.Host.Startup.Configure(IApplicationBuilder app) in D:\ProtelionProjects\smc-backup\Source\SMC.Backup.Host\Startup.cs:line 80 at System.RuntimeMethodHandle.InvokeMethod(Object target, Span
我创建了看起来像这样的迁移类
[Migration(1)]
public class _1_InitialMigration : Migration
{
public override void Down()
{
Delete.Table("backups");
Delete.Schema("public");
}
public override void Up()
{
// Check if the database exists
if (!Schema.Schema("public").Exists())
{
// Create the database
Create.Schema("public");
}
if (!Schema.Table("backups").Exists())
{
Create.Table("backups")
.WithColumn("id").AsInt32().PrimaryKey().Identity()
.WithColumn("launch_mode").AsInt16().NotNullable()
.WithColumn("status").AsInt16().NotNullable().Indexed()
.WithColumn("started_at").AsDateTime().NotNullable()
.WithColumn("finished_at").AsDateTime().Nullable()
.WithColumn("error_message").AsString().Nullable();
}
}
}
我已经创建了扩展类,我在其中注入了 FluentMigrator 并在我的 API 启动类中使用。
public static IServiceCollection AddFluentMigrator(this IServiceCollection services, IConfiguration configuration)
{
services.AddFluentMigratorCore()
.ConfigureRunner(rb => rb
.AddPostgres()
.WithGlobalConnectionString(configuration.GetConnectionString("DefaultConnection"))
.ScanIn(typeof(_1_InitialMigration).Assembly).For.Migrations())
.AddLogging(lb => lb.AddFluentMigratorConsole());
return services;
}
public static IApplicationBuilder Migrate(this IApplicationBuilder app)
{
using var scope = app.ApplicationServices.CreateScope();
var migrator = scope.ServiceProvider.GetService<IMigrationRunner>();
migrator?.ListMigrations();
migrator?.MigrateUp();
return app;
}
为什么会发生这种情况,如果它确实是流畅的迁移器使用中的问题,如何解决?
提前致谢。
我试图在 FluentMigrator GitHub 问题中找到解决方案。但我没有得到任何答复。
答: 暂无答案
评论