2011-05-29 115 views
3

如何解決數據庫鎖定問題?因爲我的測試沒有通過 - 它使同一類別中的一堆測試失敗。謝謝!數據庫被鎖定?

1) UsersController GET 'edit' should have a link to change the Gravatar 
    Failure/Error: @user = Factory(:user) 
    SQLite3::BusyException: database is locked: INSERT INTO "users" ("created_at", "email", "encrypted_password", "name", "salt", "updated_at") VALUES ('2011-05-29 03:47:07.510067', '[email protected]', 'fc70fcb4b094b388d87c5054ed9b0bfa06f53431d44c527e852c5bdffd3a0fa8', 'Matthew Berman', NULL, '2011-05-29 03:47:07.510067') 
    # ./spec/controllers/users_controller_spec.rb:128:in `block (3 levels) in <top (required)>' 

回答

16

這是由於Rails控制檯會話正在打開。爲了在將來避免這種情況,一定要bin/rails console -s,並且在訪問SQLite 3 DB時確保退出任何控制檯會話。

+6

如果其他人對軌道選項有點困惑/無知,他意味着腳本/軌道控制檯-s。 -s用於「沙箱」,意味着退出時所有更改都會回滾。我想這意味着控制檯不需要在數據庫上寫入鎖定;儘管爲什麼它會永遠保持寫入鎖之間的命令對我來說是神祕的。 – 2012-06-10 00:18:55