2011-05-17

RailsでSQL Serverに接続する

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
RailsでSQL Serverに接続する際には以下のサイトがとても参考になります。
CentOSにRailsを入れてODBC経由でSQLServerに繋げるまで その1
CentOSにRailsを入れてODBC経由でSQLServerに繋げるまで その2

この方法ですでに作成済みのSQL ServerのDBの内容を参照だけして、メインの利用はmysqlということをやっていました。

ちょっと都合によりメインのDBもSQL Serverを利用しようかと思って
rake db:migrate
をしたら以下のようなエラーが出てしまいました。
S0001 (2714) [unixODBC][FreeTDS][SQL Server]There is already an object named 'schema_migrations' in the database
(ちなみに初回はこのエラーはでないのですが2回目以降でました)

activerecord-odbc-adapter
を利用して接続をかけていたのですが、これを
activerecord-sqlserver-adapter
に変えたら
rake db:migrate
が動くようになりました。

最初に紹介したサイトを参考にODBCの設定がされているという前提ですが、
activerecord-sqlserver-adapter
を使えるようにするには、以下のような感じです。
ちなみにRailsは2.3系の場合です。

gem install dbi
gem install dbd-odbc
gem install activerecord-sqlserver-adapter -v 2.3
※↑これではうまくいきませんでした。↓こちらの方がよいです。
gem install activerecord-sqlserver-adapter -v 2.3.18
gem install ruby-odbc
2.3.18を使う場合は、rails 2.3.11の方がよさげです。

インストールしたら
condig.database.yaml

adapter

odbc
から
sqlserver
に変えればOKです。

以下のような感じです。
development:
#  adapter: odbc
  adapter: sqlserver
  dsn: aaa_dev
  database: aaa_dev
  mode: odbc
  username: aaa
  password: abc123

でも
rake db:migrate:reset
は効いてくれませんでした。


コメントを投稿