我从nuget安装了最新的DbUp 4.4.0版本,并遵循了文档中描述的步骤
https://dbup.readthedocs.io/en/latest/
我使用的是MySQL数据库,并创建了一个新的.NET核心控制台项目。
-
目前还没有数据库。我删除了它
-
我安装了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文件,并将其命名为11595961596-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服务器对应的手册版本中要使用的正确语法'[my_database]。[schemaversions]([Id]int identity(1,1(在第1行处不是null约束
FWIW,我来这里是因为我看到了这个错误。。。除了在我的情况下,它似乎与这个旧错误有关:https://github.com/DbUp/DbUp/issues/188。另一个架构已具有schemaversions
表。