Hi I have an unusual one, hoping one of you geniuses can give me a hint
as I don’t know where else to look.
I’m running an combo of Rails/Sql Server (I know, I know, legacy though)
using Ubuntu/UnixODBC/FreeTDS/activerecord-odbc-adapter. The app seems
to be talking to the DB perfectly. When I have a clean database, I’m
able to run rake db:migrate and everything generates correctly. However,
if I add another migration and run the migrations again, I get this
error:
rake aborted!
S0001 (2714) [unixODBC][FreeTDS][SQL Server]There is already an object
named ‘schema_migrations’ in the database.
Which, of course there is! I’m just attempting to add a new table,
column, etc. The only way I’ve been able to add migrations thus far is
to wipe the database and rerun the migrations from scratch. Obviously
can’t keep that up forever.
with a --trace argument, I do notice that it thinks I’m running them for
the first time. Where does the rake task look to decide this?
Actually the schema_info table was replace by the schema_migrations
table in later versions of rails (2.0+ I think?). When looking at the
schema_migrations table, I do see all the migrations to date listed.
Rails seems to be making the decision that this is the first time the
migrations have run from some local setting.
The “first_time” just means that’s the first time the task is being
invoked in this rake run, I believe. Doesn’t mean it thinks you’re
running migrations for the first time ever.
I encountered this error with a plugin that had not been upgraded to be
compatible with Rails 2.x. I would recommend running rake --trace
again, but then look at the call stack that gets dumped to figure out
exactly which task is causing this error, and perhaps what plugin may or
may not be related.
Looks like there was another post with a similar issue, just figured I’d
cross-reference in case someone actually does still want to use the
activerecord-odbc-adapter.
I decided to try the rails-sqlserver-2000-2005-adapter gem rather than
the activerecord-odbc-adapter I was using before. I then had change the
connection type in database.yml from:
adapter:ODBC
to:
adapter:sqlserver
mode:ODBC
This seems to have fixed the issue, and give me the added bonus of the
sql output to the console, which I wasn’t getting with the other
adapter.
thanks for all your input!
-Ben
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.