2012-01-24 175 views
6

我使用的是PostgreSQL,Rails 3.1.3和Ruby 1.9.3。我正在努力使用db:migrate,如here所述。db:迁移挂在简单迁移

这是我在终端是送走:

[email protected]:~/railsprojects/hartl$ bundle exec rake db:migrate --trace 
** Invoke db:migrate (first_time) 
** Invoke environment (first_time) 
** Execute environment 
** Invoke db:load_config (first_time) 
** Invoke rails_env (first_time) 
** Execute rails_env 
** Execute db:load_config 
** Execute db:migrate 
== AddEmailUniquenessIndex: migrating ======================================== 
-- add_index(:users, :email, {:unique=>true}) 

,然后将代码挂起,在这一点上。任何想法为什么?

来源:development.log

[1m[36m (0.1ms)[0m [1mSHOW search_path[0m 
[1m[35m (0.5ms)[0m SELECT "schema_migrations"."version" FROM "schema_migrations" 
Migrating to CreateUsers (20120124022843) 
Migrating to AddEmailUniquenessIndex (20120124093922) 
[1m[36m (0.1ms)[0m [1mBEGIN[0m 
[1m[35m (3.6ms)[0m SELECT distinct i.relname, d.indisunique, d.indkey, t.oid 
FROM pg_class t 
INNER JOIN pg_index d ON t.oid = d.indrelid 
INNER JOIN pg_class i ON d.indexrelid = i.oid 
WHERE i.relkind = 'i' 
AND d.indisprimary = 'f' 
AND t.relname = 'users' 
AND i.relnamespace IN (SELECT oid FROM pg_namespace WHERE nspname = ANY (current_schemas(false))) 
ORDER BY i.relname 
+0

就可以登录一个适当特权PostgreSQL用户,并做'SELECT * FROM pg_stat_activity' – derobert

+0

我当然可以。我刚刚通过pgAdmin III执行了此查询: - 执行查询: select * from pg_stat_activity 查询总运行时间:11毫秒。 检索4行。 – Abram

+0

@derobert,谢谢你的回应,但是今天早上的迁移对我有用。没什么不同 - 相同的迁移文件。也许电脑只需要重启?奇怪。 – Abram

回答

6

我有同样的问题..我发现有其挡在该表进一步查询空闲交易..

运行:

heroku pg:ps --app=... 

要查看数据库进程。你将不得不杀死空闲进程:

heroku pg:kill 913 --force --app=... 

(913是空闲进程的ID - >将其更改为你的需求)

+0

在运行这些东西之前,请尝试在ctrl cinging您的rails服务器和任何打开的rails控制台(如果有的话)之后进行迁移。 –

8

我只是有一个类似的问题,其中一个很简单迁移拖延没有明显的原因。我认为这个问题与无法获得数据库连接有关。我退出了在另一个终端上打开的导轨控制台会话,然后立即完成迁移,没有任何问题。

+1

我的解决方案也是一样的。我在另一个终端选项卡中关闭了连接,并且迁移立即结束。 – Sisi

+0

同样在这里。我多次面对这个问题,这是因为我在另一个选项卡中有一个导轨控制台终端窗口。关闭它,运行迁移并成功完成。 – Francisco