2016-02-02 13 views
0

我在chapter 8.4.1,產生遷移後我試圖運行:Rails教程(M.Hartl)第3版,第8章,如何通過關閉一個流氓`rails控制檯來解鎖數據庫?

$ bundle exec rake db:migrate 

但被賦予了以下錯誤:

rake aborted! 
StandardError: An error has occurred, this and all later migrations canceled: 

SQLite3::BusyException: database is locked: 

#followed by a long list of paths/filenames and line numbers... 

我知道這可能是因爲我退出終端沒有適當退出rails console --sandbox會議。但是,如何找到並關閉此會話?

+0

你可能要接受一個作爲這個問題的答案。 – Abhinay

回答

4

在終端控制檯類型(確保你在你的Rails應用程序目錄):

$ ps aux 

那麼你應該看到的進程列表,他們之間相似的東西:

USER   PID %CPU %MEM VSZ RSS TTY  STAT START TIME COMMAND 
ubuntu  49527 0.0 0.0 482924 620 ?  Sl Jan29 0:00 rails_console --sandbox 

請記下PID,在這種情況下爲49527,然後在命令行中運行以下命令:

$ kill 49527 

現在運行您的遷移$ bundle exec rake db:migrate應該工作。

+0

實際上'ps aux | grep rails'是你應該執行的。 – Abhinay

+0

另外,'top'是檢查運行過程的另一個好命令。 – Abhinay

+0

@Abhinay謝謝,隨時添加爲答案。 –

1

嘗試從終端運行$ ps aux | grep rails

應該返回是這樣的:

username 68924 0.0 1.5 3166032 62168 ?? S  8:49PM 0:00.16 rails_console  
username 68900 0.0 0.1 2472884 3420 s003 S+ 8:48PM 0:00.62 /Users/username/.rbenv/versions/2.2.2/bin/ruby bin/rails c 
username 68708 0.0 0.2 2535772 6396 s000 S+ 8:20PM 0:03.16 /Users/username/.rbenv/versions/2.2.2/bin/ruby bin/rails s 

因爲過程在這種情況下被殺害,嘗試用命令強行殺死它

$ kill -9 PID