1

gemを使用してSQLServer2008データベースサーバーでテストを実行できるようにするには、何をする必要がありますactiverecord-sqlserver-adapterか?

database.ymlの開発設定を介して32ビットODBC接続を使用して、開発データベースに問題なく接続できます。

#SQL Server
development:
  adapter: sqlserver
  mode: odbc
  dsn: <odbc_name>
  username: <db_user>
  password: <db_password>
  host: <sql host>

テストのセットアップを開始しましたが、実行時にエラーが発生しました。

rake db:test:prepare

エラーは次のとおりです。

rake aborted!
ODBC::Error: 37000 (3708) [Microsoft][SQL Native Client][SQL Server]Cannot drop 
the database 'master' because it is a system database.: DROP DATABASE [master]

Tasks: TOP => db:test:load => db:test:purge
(See full trace by running task with --trace)

このエラーは私には意味がありません。マスターデータベースを削除しようとしているのはなぜですか?

database.ymlでのテスト設定は、別のデータベースを指す別のodbcを指すことを除いて、上記の開発者とまったく同じです。

編集

私が実行するときrake db:test:prepareの最初のステップは、テストデータベースを削除することでなければならないことに気づきました。したがって、最初に使用することになっているデータベースを認識しています。

なぜマスターを削除しようとするのですか?

これは、SQLがデフォルトのデータベースを見つけられない場合、デフォルトでユーザーマスターを提供し、ユーザーのデフォルトデータベースをrake db:test:prepare作成できないため、最初にループバックして再度ドロップしようとするためですか?

4

1 に答える 1

1

テスト構成でデータベースの名前を指定することで、これを機能させました。

# config/database.yml
...
test:
    adapter: sqlserver
    mode: odbc
    dsn: <odbc_name>
    database: <database_name>
    username: <db_user>
    password: <db_password>
...
于 2012-10-16T23:51:18.233 に答える