2012-11-02 57 views
0

我不斷收到錯誤消息:Rails:鎖定的數據庫? - sqlite3的:: BusyException:

SQLite3::BusyException: database is locked: INSERT INTO "users" ("created_at", "email", "name", "password_digest", "updated_at") VALUES (?, ?, ?, ?, ?) 

當我試圖執行代碼:

@user = User.new(:name => "User1", :email => "[email protected]", :password => "password", :password_confirmation => "password") 
@user.save 

是否與調用save創建用戶後的問題?我需要暫停嗎?如果是這樣,我該如何設置/獲取數據庫變量。

我不知道這裏出了什麼問題。 User變量被創建得很好,因爲我可以輸出@user變量的屬性,如果我刪除保存功能。我只是假設我正在做一些非常錯誤的事情。我知道我不應該硬編碼一個用戶,但我正在做測試。

這是怎麼回事?

編輯:

我試圖drop我的數據庫,但抱怨sqlite3的文件丟失。但是,當我導航到它所投訴的確切路徑時,這些文件正在ls下列出。

我假設這是我的問題。這是什麼意思?

回答

3

您是否在嘗試在Rails服務器運行時執行此操作?

或者您是否嘗試過使用SQLite數據庫瀏覽器等工具手動插入或刪除表上的行?

Sqlite具有較差的併發支持,任何拋出數據庫的操作都會拋出Busy異常。

如果錯誤繼續發生,並且數據庫中的數據不是那麼重要,只需刪除數據庫並再次遷移即可。錯誤應該消失。

+0

它告訴我,我無法刪除當前數據庫,因爲它無法找到test.sqlite3或development.sqlite3文件,即使當我導航到其抱怨的確切路徑時,文件顯然也存在。我認爲這可能與我的問題有關?這意味着什麼? – RileyE

+0

啊哈!這確實有幫助。我不能完全記得我是如何刪除並重新遷移的,但它涉及評論和取消註釋我的database.yml文件中的測試說明並執行耙動作。這只是拍攝和瞄準後來的戰術,但它允許我重置我的數據庫,它現在正在工作。謝謝! – RileyE