2008-10-20 54 views
2

我有一个未完成的项目,开发人员只是没有完成,没有留下任何有关安装过程的文档。我已经下载了生产目录,以我的Windows机器(InstantRails的运行2),我创建作为database.yml所需的数据库,我试图运行rake:db:migrate --trace但我收到以下错误信息:Rake db:migration aborted

(in D:/projects/broke2) 
** Invoke db:migrate (first_time) 
** Invoke environment (first_time) 
** Execute environment 
** Execute db:migrate 
rake aborted! 
uninitialized constant Admin 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activesupport-2.1.1/lib/active_support/dependencies.rb:279:in `load_missing_constant' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activesupport-2.1.1/lib/active_support/dependencies.rb:468:in `const_missing' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activesupport-2.1.1/lib/active_support/dependencies.rb:480:in `const_missing' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activesupport-2.1.1/lib/active_support/inflector.rb:285:in `constantize' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activesupport-2.1.1/lib/active_support/inflector.rb:284:in `each' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activesupport-2.1.1/lib/active_support/inflector.rb:284:in `constantize' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activesupport-2.1.1/lib/active_support/core_ext/string/inflections.rb:143:in `constantize' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/migration.rb:481:in `migrations' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/connection_adapters/mysql_adapter.rb:15:in `inject' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/migration.rb:465:in `each' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/migration.rb:465:in `inject' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/migration.rb:465:in `migrations' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/migration.rb:431:in `migrate' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/migration.rb:373:in `up' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/migration.rb:356:in `migrate' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rails-2.1.1/lib/tasks/databases.rake:99 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:617:in `call' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:617:in `execute' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:612:in `each' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:612:in `execute' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:578:in `invoke_with_call_chain' 
D:/InstantRails-2.0-win/ruby/lib/ruby/1.8/monitor.rb:242:in `synchronize' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:571:in `invoke_with_call_chain' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:564:in `invoke' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:2019:in `invoke_task' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1997:in `top_level' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1997:in `each' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1997:in `top_level' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:2036:in `standard_exception_handling' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1991:in `top_level' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1970:in `run' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:2036:in `standard_exception_handling' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1967:in `run' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/bin/rake:31 
D:/InstantRails-2.0-win/ruby/bin/rake:19:in `load' 
D:/InstantRails-2.0-win/ruby/bin/rake:19 

我是一个普通的Rails开发人员(这不是我的第一个应用程序),但我从来没有看到这个错误,我不知道从哪里开始调试。

回答

2

有时Rails会抛出这个错误,如果有一个语法错误,其中管理员定义。

尝试查找admin.rb并确保它解析。另外,您可能想尝试一次运行一个迁移(rake db:migrate VERSION=1等),以查看是否可以帮助您追踪哪个迁移导致错误,或者是否仅仅是引导应用程序时出现问题。

1

我想说你的问题出在你的迁移问题的uninitialized constant Admin部分。你有没有试过找到管理员初始化的地方,并且包括你在哪里使用它的路径? (另外,你正在运行的rake任务的内容是什么?)

0

它不指向我在哪里我有一个管理常量。有一种方法可以检查我至少应该在哪里看?我的模型,我的控制器等?

rake db:migrate VERSION = 1,已经给我一个错误了。正如我告诉过你的,我只是想完成另一个人未完成的项目。

如何为每个文件执行迁移文件?

问候,

维克多

+0

备份数据库,然后完全删除它并尝试迁移到VERSION = 1。然后VERSION = 2等 管理常量可能是一个模型。您的应用中是否有名为admin.rb的文件? – 2008-10-20 20:11:49

+0

这很奇怪。我有一个001_admin.rb,但没有管理员模型。在我的001_admin.rb它试图写在默认类..有道理?无论如何,我修正了 – 2008-10-20 20:29:24

2

我怀疑你有这样的创建的表,并使用一个模型添加了一些数据迁移。在项目后期,模型被重新命名或删除(如表格可能?)。由于模型不再存在,迁移失败,但没有人注意到,那时他们只是一次运行一些迁移,而不是从一个干净的数据库运行。

这里的教训......如果您重新命名模型或表格(或更新其验证和字段),那么请检查您的迁移是否从当前生产版本开始运行。

0

您可以尝试一次全部装载模式而不是执行每个迁移:由于RichH说,有可能是一个变化的模式不反映在迁移负载

耙分贝:模式

相关问题