2

我从 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 并抛出此错误

表“my_database.schemaversions”不存在

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


如果有帮助:我正在使用带有 MariaDb 的 Linux。我也尝试自己创建该表

https://dbup.readthedocs.io/en/latest/more-info/journaling/

.JournalToSqlTable("my_database", "schemaversions")

但后来我得到了这个错误

MySql.Data.MySqlClient.MySqlException:您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的 '[my_database].[schemaversions] ( [Id] int identity(1,1) not null constraint' 附近使用正确的语法

4

2 回答 2

2

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

于 2020-08-05T11:27:41.870 回答
0

FWIW,我来到这里是因为我看到了这个错误......除了我的情况,它似乎与这个旧错误有关:https ://github.com/DbUp/DbUp/issues/188 。另一个模式已经有一个schemaversions表。

于 2021-03-11T16:41:28.207 回答