2011-05-09 77 views
7

解決(見下文)

當我試圖on Rails應用程序創建或破壞我的紅寶石的記錄(上sqlite3的運行)(或控制檯以及)我得到一個SQL異常:sqlite3的錯誤 - 無法回滾 - 沒有事務處於活動狀態


irb(main):014:0> ApiCache.all 
=> [] 
irb(main):015:0> ApiCache.create(:hash => 'qwe', :contents => 'asd') 
SQLite3::SQLException: cannot rollback - no transaction is active 
     from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/sqlite3-1.3.3-x86-mingw32/lib/sqlite 
3/database.rb:97:in `close' 
     from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/sqlite3-1.3.3-x86-mingw32/lib/sqlite 
3/database.rb:97:in `prepare' 
     from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/sqlite3-1.3.3-x86-mingw32/lib/sqlite 
3/database.rb:134:in `execute' 
     from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/sqlite3-1.3.3-x86-mingw32/lib/sqlite 
3/database.rb:517:in `rollback' 
     from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/activerecord-3.0.6/lib/active_record 
/connection_adapters/sqlite_adapter.rb:168:in `rollback_db_transaction' 
     from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/activerecord-3.0.6/lib/active_record 
/connection_adapters/abstract/database_statements.rb:176:in `transaction' 
     from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/activerecord-3.0.6/lib/active_record 
/transactions.rb:207:in `transaction' 
     from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/activerecord-3.0.6/lib/active_record 
/transactions.rb:290:in `with_transaction_returning_status' 
     from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/activerecord-3.0.6/lib/active_record 
/transactions.rb:240:in `save' 
     from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/activerecord-3.0.6/lib/active_record 
/transactions.rb:251:in `rollback_active_record_state!' 
     from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/activerecord-3.0.6/lib/active_record 
/transactions.rb:239:in `save' 
     from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/activerecord-3.0.6/lib/active_record 
/base.rb:498:in `create' 
     from (irb):15 
     from :0 
irb(main):016:0> ApiCache.all 
=> [#<ApiCache id: 9, hash: "qwe", contents: "asd", created_at: "2011-05-09 13:09:31", updated_at: " 
2011-05-09 13:09:31">] 

記錄保存到數據庫中,但也引發這種錯誤。我試圖刪除我的數據庫,然後再創建並遷移它,但它似乎沒有任何好處。

我真的很感激任何想法如何解決它。我以前從未遇到過這樣的事=(

SOLUTION

我已經毀了我的模型,並創造了一個又一個必須在屬性名有些衝突,作爲新的一個現在有FP:字符串內容:文字和很好的作品。可能是字哈希,毀了SQLite =)謝謝你們!

+0

請將答案標誌授予其中一個答案。 – JJD 2013-07-17 11:37:21

回答

0

也許你應該試試看這裏:Rails Tests Fail With Sqlite3看起來他們可能已經找到了解決方法。

+0

該線程中的鏈接都是404的=(我已經瀏覽過網頁,但沒有找到任何相關的內容...... – Fenelon 2011-05-09 15:39:26

9

神聖煙霧......事實上情況是,字段名稱「hash」會導致sqlite3拋出這個非常無益的錯誤。 Tricky one ...

1

從不創建名爲「hash」的實例方法是一個好主意。一噸紅寶石物體用於比較和平等。不管天氣如何,你都可以使用SQLite,或者其他任何方法,只有當你知道你想從結果中得到什麼時,才應該使用自定義哈希方法。在這種情況下,ActiveRecord爲你提供了方法。我會重命名該列:)

相關問題