1

首先,我必须运行“rake RAILS_ENV=test ...”来让测试套件访问我的测试数据库。烦人但可以忍受。

但是,当我这样做时,我会收到一长串错误,如下所示:

> rake RAILS_ENV=test -I test test:units
psql:/path/to/project/db/test_structure.sql:33: ERROR:  function "armor" already exists with same argument types
[and many more]

看起来一些数据库定义正在不必要地重新加载。我在谷歌上找不到任何提及,所以我想知道其他人是否看过这个?

我在 environment.rb 中使用具有以下内容的 PostgreSQL 数据库:

  config.active_record.schema_format = :sql

并使用带有 rake 0.8.7 的 Rails 2.3.5。

在这一点上,我已经修复了它,但忘记了如何!我想我可能已经将 pgcrypt 加载到模板模式中,因此数据库正在创建一个已经加载的“空白”数据库,然后 rails 正在从保存的模式中重新定义函数。从模板数据库中卸载函数可以解决这个问题。

4

1 回答 1

1

运行 rake 任务的通常约定如下:

> RAILS_ENV=test rake test:units

或如下:

> rake test:units RAILS_ENV=test

您可以尝试以上述方式之一运行吗?希望能解决问题!

于 2011-02-06T11:44:01.600 回答