c# - dbup 不会自动创建 schemaversions 表

标签 c# mysql .net-core mariadb dbup

我从 nuget 安装了最新的 DbUp 版本 4.4.0 并按照文档中描述的步骤操作
https://dbup.readthedocs.io/en/latest/
我正在使用 MySQL 数据库并创建了一个新的 .NET Core 控制台项目。

  • 目前还没有数据库。我删除了它
  • 我安装了 dbup 和 dbup-mysql 包
  • 我从文档中复制了示例代码并对其进行了一些修改
      static void Main(string[] args)
      {
          var connectionString = "Server=localhost;Port=3306;Database=my_database;Uid=root;Pwd=admin;";
    
          EnsureDatabase.For.MySqlDatabase(connectionString);
    
          var upgrader = DeployChanges.To
                  .MySqlDatabase(connectionString)
                  .WithScriptsEmbeddedInAssembly(Assembly.GetExecutingAssembly())
                  .Build();
    
          var result = upgrader.PerformUpgrade();
    
          if (!result.Successful)
          {
              throw result.Error;
          }
      }
    
  • 我在该项目中创建了一个新的 .sql 文件并将其命名为 1595961596-initial_script.sql 并将其定义为 嵌入资源

  • .
    DROP DATABASE IF EXISTS `my_database`;
    CREATE DATABASE `my_database`;
    
  • 运行项目时result.Successful返回 false 并抛出此错误

  • Table 'my_database.schemaversions' doesn't exist


    我以为它会生成 schemaversions自动表?有人知道如何解决吗?

    如果有帮助:
    我正在使用带有 MariaDb 的 Linux。我还尝试用自己的方式创建该表
    https://dbup.readthedocs.io/en/latest/more-info/journaling/
    .JournalToSqlTable("my_database", "schemaversions")
    
    但后来我收到了这个错误

    MySql.Data.MySqlClient.MySqlException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '[my_database].[schemaversions] ( [Id] int identity(1,1) not null constraint' at line 1

    最佳答案

    架构版本 已正确添加,但问题是您在初始脚本中删除了数据库。 DbUp 不会再次添加它。

    关于c# - dbup 不会自动创建 schemaversions 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63220911/

    相关文章:

    c# - 调用 sync 和 async 方法有 await 区别?

    c# - AutoMapper 对象集合不映射

    c# - WPF MVVM 与 Messenger 通信(VM 的消息后加载)

    c# - ef core 2.0 使用包含过滤器搜索多列

    .net - docs.microsoft.com 上的 .NET 平台扩展是什么?

    c# - Automapper - 将多对多关联映射到平面对象的最佳实践

    php - 在数据库中添加序列号,每年重置

    mysql - 触发计数删除次数

    mysql - 存储很少使用的条目的最佳方式应该是什么?

    c# - Visual Studio 不在目标框架下拉列表中显示 .NET Core 2.2