Я установил последнюю версию DbUp 4.4.0 с nuget и выполнил шаги, описанные в документации
https://dbup.readthedocs.io/en/latest/
Я использую MySQL database и создал новый. NET Core console project.
База данных еще не существует. Я удалил его
Я установил пакет 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
будет автоматически сгенерирована? Кто-нибудь знает как исправить?
Если это поможет: я использую Linux с MariaDb. Я также попытался создать эту таблицу самостоятельно с помощью
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) not null constraint' в строке 1