我从 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' 附近使用正确的语法