rake db:migrate在db:schema:dump步骤上挂起

时间:2014-03-12 14:59:22

标签: ruby rake jruby database-migration

执行rake db:migrate命令时,它会挂起Execute db:schema:dump步骤。 我使用的是jruby 1.7.10和db gem jdbc-db2 v 9.7。好像在db目录中成功创建了schema.rb文件,但该命令仍然只挂在该步骤上。

对可能导致这种情况的任何想法都会有所帮助。

1 个答案:

答案 0 :(得分:0)

我刚刚经历了类似的事情,我的佣金测试越来越慢。我使用的是Rails 2.0.2,Ruby 1.8.6和Oracle 11.2。

问题在于Oracle有recycle bin,并且每次运行rake测试时表都会被删除并重新创建。

为了防止回收站变大,我在准备测试数据库后添加了一个清除它的步骤。使用以下内容创建文件lib/tasks/databases.rake

namespace :db do
  namespace :test do
    task :prepare do
      # The Oracle recycle bin fills up and slows down the test preparation.
      ActiveRecord::Base.connection.execute("purge recyclebin")
    end
  end
end

您可能不想在生产数据库中执行此操作,但是您没有运行db:test:针对生产数据库进行准备,是吗?

我通过注意此查询运行了很长时间来发现问题:

 SELECT lower(i.index_name) as index_name, i.uniqueness, lower(c.column_name) as column_name
 FROM user_indexes i, user_ind_columns c
 WHERE i.table_name = 'QCS_USERS'
 AND c.index_name = i.index_name
 AND i.index_name NOT IN (SELECT uc.index_name FROM user_constraints uc WHERE uc.constraint_type = 'P')
 ORDER BY i.index_name, c.column_position

看着user_constraints表,我看到有成千上万的行,即使在我放下所有桌子之后,这导致我进入了回收站的some discussions