Pergunta

I'm using MigratorDotNet to manage Rails-style migrations for my web app. I have a workflow where, if I delete all the tables in the database, I can access an installation view that will run MigratorDotNet and create all the necessary tables.

This works locally. For some reason, when I upload my code to my Arvixe hosting, the migrations just never run. I get this odd error:

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

This is odd because, prior to running migrations, I manually deleted all the tables in the database (to make sure it wasn't left over from a previous install).

My code essentially boils down to:

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

I've already verified by logging that the connection string is correct (production/hosting settings), and the assembly is correctly loaded (name and version).

Works locally, but not on Arvixe. How do I troubleshoot this?

Foi útil?

Solução

This is a dark day.

It turns out (oddly) that the root cause was my hosting company used a schema other than dbo for my database. Because of this, the error message I saw (SchemaInfo already exists) was talking about their table.

My solution, unfortunately, was to rip out MigratorDotNet and go with FluentMigator instead. not only did this solve the problem, but it also gave me a more intelligible error message (one referring to the schema names).

While it doesn't seem possible to auto-set the schema, and while I need to switch the schema on my dev vs. production machine, it's still a solvable problem (and a better API, IMO). I googled, but did not find any way to change the default schema in migratordotnet.

Outras dicas

I'm sorry for the issues that you were having. On shared hosting, unfortunately the only way that we may be able to change the schema is manually. If you are still looking for a solution that requires our assistance, please forward your ticket ID to qa .at. arvixe.com as well as arvand .at. arvixe.com and we can look into the best way to resolve this.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top