1

我需要做什么才能使用 gem 对 SQL Server 2008 数据库服务器运行测试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 中的测试设置与我上面的 dev 完全相同,只是它指向不同的 odbc,它指向不同的数据库。

编辑

我注意到,当我运行rake db:test:prepare的第一步必须是删除测试数据库。所以它首先知道它应该使用什么数据库。

为什么它会尝试删除主人?

这是因为当 sql 找不到默认数据库时,它默认为用户 master 并且rake db:test:prepare无法创建用户默认 db,因此它循环回到开头并尝试再次删除?

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 回答