首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails: rake :迁移->堆栈级别太深

Rails: rake :迁移->堆栈级别太深
EN

Stack Overflow用户
提问于 2010-11-07 03:36:24
回答 3查看 3.3K关注 0票数 3

我以前从来没有见过这个错误,我不知道我应该寻找什么。

代码语言:javascript
复制
$ rake db:migrate --trace
(in /Users/tscolari/Projetos/movies)
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:migrate
rake aborted!
stack level too deep
/opt/local/lib/ruby/gems/1.8/gems/scrubyt-0.4.06/lib/scrubyt/utils/ruby_extensions.rb:66:in `write'
/opt/local/lib/ruby/gems/1.8/gems/scrubyt-0.4.06/lib/scrubyt/utils/ruby_extensions.rb:66:in `collect'
/opt/local/lib/ruby/gems/1.8/gems/scrubyt-0.4.06/lib/scrubyt/utils/ruby_extensions.rb:66:in `write'
/opt/local/lib/ruby/gems/1.8/gems/scrubyt-0.4.06/lib/scrubyt/utils/ruby_extensions.rb:66:in `write'
/opt/local/lib/ruby/gems/1.8/gems/activesupport-3.0.0/lib/active_support/buffered_logger.rb:108:in `flush'
/opt/local/lib/ruby/gems/1.8/gems/activesupport-3.0.0/lib/active_support/buffered_logger.rb:101:in `synchronize'
/opt/local/lib/ruby/gems/1.8/gems/activesupport-3.0.0/lib/active_support/buffered_logger.rb:101:in `flush'
/opt/local/lib/ruby/gems/1.8/gems/activesupport-3.0.0/lib/active_support/buffered_logger.rb:125:in `auto_flush'
/opt/local/lib/ruby/gems/1.8/gems/activesupport-3.0.0/lib/active_support/buffered_logger.rb:66:in `add'
/opt/local/lib/ruby/gems/1.8/gems/activesupport-3.0.0/lib/active_support/buffered_logger.rb:77:in `debug'
/opt/local/lib/ruby/gems/1.8/gems/activerecord-3.0.0/lib/active_record/connection_adapters/abstract_adapter.rb:201:in `log'
/opt/local/lib/ruby/gems/1.8/gems/activerecord-3.0.0/lib/active_record/connection_adapters/sqlite_adapter.rb:135:in `execute'
/opt/local/lib/ruby/gems/1.8/gems/activerecord-3.0.0/lib/active_record/connection_adapters/sqlite_adapter.rb:180:in `tables'
/opt/local/lib/ruby/gems/1.8/gems/activerecord-3.0.0/lib/active_record/connection_adapters/abstract/schema_statements.rb:21:in `table_exists?'
/opt/local/lib/ruby/gems/1.8/gems/activerecord-3.0.0/lib/active_record/connection_adapters/abstract/schema_statements.rb:429:in `initialize_schema_migrations_table'
/opt/local/lib/ruby/gems/1.8/gems/activerecord-3.0.0/lib/active_record/migration.rb:487:in `initialize'
/opt/local/lib/ruby/gems/1.8/gems/activerecord-3.0.0/lib/active_record/migration.rb:433:in `new'
/opt/local/lib/ruby/gems/1.8/gems/activerecord-3.0.0/lib/active_record/migration.rb:433:in `up'
/opt/local/lib/ruby/gems/1.8/gems/activerecord-3.0.0/lib/active_record/migration.rb:415:in `migrate'
/opt/local/lib/ruby/gems/1.8/gems/activerecord-3.0.0/lib/active_record/railties/databases.rake:142
/opt/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `call'
/opt/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `execute'
/opt/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `each'
/opt/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `execute'
/opt/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:597:in `invoke_with_call_chain'
/opt/local/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/opt/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:590:in `invoke_with_call_chain'
/opt/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:583:in `invoke'
/opt/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2051:in `invoke_task'
/opt/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'
/opt/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `each'
/opt/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'
/opt/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
/opt/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2023:in `top_level'
/opt/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2001:in `run'
/opt/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
/opt/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:1998:in `run'
/opt/local/lib/ruby/gems/1.8/gems/rake-0.8.7/bin/rake:31
/opt/local/bin/rake:19:in `load'
/opt/local/bin/rake:19

首先,我认为这可能是我的迁移中的一个错误,所以我删除了所有的迁移检查,但错误仍然存在。奇怪的是,应用程序/控制台启动时没有任何问题:

代码语言:javascript
复制
$ rails server
=> Booting Mongrel
=> Rails 3.0.0 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server

然后我就不知道去哪里找错误了。有什么帮助吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-07 06:29:23

好的,我尝试了所有方法,rake db:reset,删除所有迁移,等等……

问题是一块宝石。我的gemfile中的scrubyt gem造成了所有这些麻烦。

票数 1
EN

Stack Overflow用户

发布于 2021-06-02 05:32:10

Ubuntu20.04上开发Rails 4应用程序时,我遇到了类似的挑战

当我运行命令rake:db migrate时,我得到以下错误:

rake已中止!跟踪:堆栈级别太深,跟踪加载‘/home/mycomputer/.rbenv/versions/2.5.8/bin/bundle:23:in’‘任务:顶级跟踪db:迁移跟踪环境(请使用--SystemStackError运行<top (required)>' /home/mycomputer/.rbenv/versions/2.5.8/bin/bundle:23:in查看完整跟踪)

这里是我如何修复它的

经过几个小时的调试,我发现这个问题是由一些过时的gem引起的,这些gem导致了一些依赖问题。

我所做的就是使用以下命令将gem更新为与项目兼容的版本:

代码语言:javascript
复制
bundle update

您还可以注释掉gem,并在取消注释后逐个尝试安装它们。如果您足够幸运地追踪到了导致问题的gem,那么您只需使用

代码语言:javascript
复制
bundle update gem_name

另一种方法,尽管不可取(因为您可能会遇到一些依赖兼容性问题)是删除您的Gemfile.lock文件,然后使用以下命令重新安装gem:

代码语言:javascript
复制
bundle install 

代码语言:javascript
复制
bundle update

就这样。

我希望这对有帮助

票数 0
EN

Stack Overflow用户

发布于 2010-11-07 03:43:30

有时候db会变得不正常。您可以做的是保存您当前的模式,然后重置您的数据库rake db:reset并进行新的迁移script/generate migration add_old_db,将整个旧的模式迁移为新的迁移。只需将旧的模式复制并粘贴到新的迁移中,它就会像以前一样创建新的表。当然,您的数据将在此过程中被销毁。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4114819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档