2012-11-02 4 views
0

나는 오류 메시지가 계속 :레일 : 잠긴 DB? - 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 

사용자를 만든 후 저장 호출에 문제가 있습니까 ? 타임 아웃이 필요합니까? 그렇다면 데이터베이스 변수를 설정하거나 잡는 방법은 무엇입니까?

나는 여기에서 무엇이 잘못 될지 실마리가 없습니다. 저장 함수를 제거하면 @user 변수의 속성을 출력 할 수 있으므로 User 변수가 잘 작성됩니다. 나는 내가 끔찍한 잘못을 저지르고 있다고 생각할 것이다. 나는 사용자를 어렵게 코딩해서는 안되지만, 테스트 목적으로하고있다.

여기에 무슨 일이 일어나고 있습니까?

편집 :

나는 drop 내 데이터베이스에 시도,하지만 sqlite3를 파일이없는 것을 불평한다. 그러나 정확한 경로로 이동하면 파일이 ls 아래에 나열됩니다.

저는 이것이 제 문제라고 가정합니다. 이것은 무엇을 의미 하는가?

답변

3

Rails 서버가 실행되는 동안이 작업을 수행하려고합니까?

또는 SQLite Database Browser와 같은 도구를 사용하여 테이블에 수동으로 행을 삽입하거나 삭제하려고 했습니까?

Sqlite의 동시성 지원 성능이 좋지 않으며 데이터베이스를 약간 벗어난 모든 작업으로 인해 Busy 예외가 발생합니다.

오류가 계속 발생하고 데이터베이스에있는 데이터가 그다지 중요하지 않으면 데이터베이스를 삭제하고 다시 마이그레이션하십시오. 오류는 없어야합니다.

+0

정확한 경로를 탐색 할 때 파일이 명확하게 존재하지만 test.sqlite3 또는 development.sqlite3 파일을 찾을 수 없기 때문에 현재 데이터베이스를 삭제할 수 없다는 메시지가 표시됩니다. 이게 내 문제와 관련이 있다고 생각하니? 이것은 무엇을 의미 할 수 있습니까? – RileyE

+0

아하! 이것은 도움이되었습니다. 어떻게 삭제하고 다시 마이그레이션 할 수 있는지 완전히 기억할 수는 없지만 database.yml 파일에서 테스트 설명을 주석 처리하고 주석 처리를 제거하고 레이크 작업을 수행하는 것이 필요했습니다. 그것은 단지 나중에 촬영하고 나중에 전술을 목표로 삼았지만 데이터베이스를 재설정 할 수있게되었습니다. 현재 작동 중입니다. 고맙습니다! – RileyE