ruby-on-rails - SQLite3 错误 - 无法回滚 - 没有事务处于事件状态

标签 ruby-on-rails sqlite

已解决(见下文)

当我尝试在我的 Ruby on Rails 应用程序(或在控制台中)中创建或销毁一条记录(在 SQLite3 上运行)时,我收到了一个 SQL 异常:


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">]

记录存入数据库也抛出这种错误。我尝试删除我的数据库,然后再次创建和迁移它,但它似乎没有任何用处。

如果有任何关于如何修复它的想法,我将不胜感激。我以前从来没有遇到过这样的事情 =(

解决方案

我已经破坏了我的模型并创建了另一个模型。一定是属性名称有些冲突,因为新的现在有 fp:string contents:text 并且工作得很好。可能是破坏 SQLite 的词 hash =) 谢谢大家!

最佳答案

我的天啊……事实上,字段名称“hash”导致 sqlite3 抛出这个非常无用的错误。棘手的...

关于ruby-on-rails - SQLite3 错误 - 无法回滚 - 没有事务处于事件状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5937426/

相关文章:

node.js - NPM 问题 : Node-pre-gyp. 使用 node-pre-gyp https 下载请求

c++ - 在 Visual C++ 项目中链接 sqlite.lib

ios - 是否使用 Core Data?

ruby-on-rails - Where NOT IN () on a join?

ruby-on-rails - Rails 4 - 呈现部分名称与变量不同的集合

ruby-on-rails - Rails 3 嵌套资源 : can't get form or pages to work

ruby-on-rails - 设计 gem : what's the difference between config. remember_for 和 config.timeout_in?

sqlite - "Error: unable to open database file"用于 GROUP BY 查询

ruby-on-rails - 如何使用 application_helper_spec.rb 中的特定 URL 测试请求对象?

ios - 为什么我的 sqlite 数据库在对核心数据模型进行版本控制时没有迁移?