Миграции не работают на хостинге

Я использую MigratorDotNet для управления миграциями в стиле Rails для моего веб-приложения. У меня есть рабочий процесс, где, если я удаляю все таблицы в базе данных, я могу получить доступ к представлению установки, которое запустит MigratorDotNet и создаст все необходимые таблицы.

Это работает локально. По какой-то причине, когда я загружаю свой код на свой хостинг Arvixe, миграции просто не запускаются. Я получаю эту странную ошибку:

There is already an object named 'SchemaInfo' in the database.

Это странно, потому что перед запуском миграций я вручную удалил все таблицы в базе данных (чтобы убедиться, что они не остались после предыдущей установки).

Мой код по сути сводится к:

new Migrator.Migrator("SqlServer", connectionString.ToString(), migrationsAssembly).MigrateToLastVersion();

Я уже проверил, зарегистрировав, что строка подключения верна (настройки производства / хостинга), и сборка загружена правильно (имя и версия).

Работает локально, но не на Arvixe. Как мне устранить это?

2 ответа

Решение

Это темный день.

Оказывается (странно), что основной причиной было то, что моя хостинговая компания использовала схему, отличную от dbo для моей базы данных. Из-за этого появилось сообщение об ошибке (SchemaInfo already exists) говорил о своем столе.

Моим решением, к сожалению, было вырвать MigratorDotNet и вместо этого использовать FluentMigator. это не только решило проблему, но и дало мне более понятное сообщение об ошибке (одно из которых относится к именам схем).

Хотя автоматическая настройка схемы не представляется возможной, и хотя мне нужно переключить схему на моем компьютере разработчика или на рабочей машине, это все еще решаемая проблема (и лучший API, IMO). Я погуглил, но не нашел способа изменить схему по умолчанию в migratordotnet.

Я прошу прощения за проблемы, которые у вас были. На общем хостинге, к сожалению, единственный способ, которым мы можем изменить схему, - это вручную. Если вы все еще ищете решение, которое требует нашей помощи, пожалуйста, отправьте ваш идентификатор билета на qa .at. arvixe.com, а также arvand .at. arvixe.com, и мы можем найти лучший способ решить эту проблему.

Другие вопросы по тегам