2012-01-24 47 views
6

Tôi đang sử dụng PostgreSQL, Rails 3.1.3 và Ruby 1.9.3. Tôi đang cố gắng sử dụng db:migrate như được nêu here.db: di chuyển bị treo trên di chuyển đơn giản

Đây là những gì tôi nhìn thấy trong terminal:

[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}) 

và sau đó mã treo vào thời điểm này. Bất kỳ ý tưởng tại sao?

Từ: 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

Bạn có thể đăng nhập vào một người dùng PostgreSQL thích hợp đặc quyền, và làm 'select * from pg_stat_activity' – derobert

+0

Tôi chắc chắn có thể. Tôi vừa mới thực hiện truy vấn này thông qua pgAdmin III: - Thực hiện truy vấn: chọn * từ pg_stat_activity Tổng thời gian truy vấn: 11 ms. 4 hàng được truy xuất. – Abram

+0

@derobert, cảm ơn phản hồi của bạn, nhưng việc di chuyển đã làm việc cho tôi sáng nay. Không có gì khác nhau - cùng một tệp di chuyển. Có lẽ máy tính chỉ cần khởi động lại? Lạ thật. – Abram

Trả lời

6

tôi đã cùng một vấn đề .. tôi phát hiện ra rằng có giao dịch nhàn rỗi mà chặn các truy vấn thêm về bảng này ..

Run:

heroku pg:ps --app=... 

Để xem các quá trình cơ sở dữ liệu. Bạn sẽ phải giết chết quá nhàn rỗi:

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

(913 là ID của quá trình nhàn rỗi -> thay đổi nó yêu cầu của bạn)

+0

Trước khi chạy công cụ này, hãy thử di chuyển sau khi ctrl c'ing máy chủ đường ray của bạn và bất kỳ bàn điều khiển mở ray nếu bạn có chúng. –

8

Tôi chỉ có một vấn đề tương tự, nơi một sự chuyển đổi rất đơn giản đã được trì hoãn không có lý do rõ ràng. Tôi tin rằng vấn đề liên quan đến việc không thể có được kết nối cơ sở dữ liệu. Tôi đã thoát khỏi một phiên giao diện điều khiển đường ray mà tôi đã mở trong một thiết bị đầu cuối khác và sau đó di chuyển ngay lập tức kết thúc mà không có vấn đề gì.

+1

Giải pháp của tôi cũng giống như vậy. Tôi đã đóng kết nối của mình trong một tab thiết bị đầu cuối khác và quá trình di chuyển đã kết thúc ngay lập tức. – Sisi

+0

Tương tự ở đây. Tôi đã phải đối mặt với vấn đề này nhiều lần và đó là vì tôi đã có một cửa sổ thiết bị đầu cuối giao diện điều khiển đường ray trong một tab khác. Đóng nó, chạy di chuyển và nó thành công. – Francisco

Các vấn đề liên quan