3

I'm new to Ruby and Ruby on Rails.

I'm making a sample app (not using scaffolding) to insert a row into a table. Table has 2 columns, "name" and "description" (along with the 3 magic columns).

In my view, I have something that looks like this:

<h1>New Location</h1>
    <%= form_for(@location) do |l| %>
    <div class="field">
        <%= l.label :name %><br />
        <%= l.text_field :name %>
    </div>
    <div class="field">
        <%= l.label :description %><br />
        <%= l.text_field :description %>
    </div>
    <div class="actions">
         <%= l.submit "Add" %>
    </div>

And controller:

class LocationsController < ApplicationController
    def new
        @location = Location.new
    end

    def create
            @location = Location.new(params[:location])
            @location.save #fails on this line
            redirect_to @location
    end
end

Model code:

class Location < ActiveRecord::Base
    attr_accessible :name, :description
    has_many :foods
end

This is what the console prints out:

Started POST "/locations" for 127.0.0.1 at Wed Jan 25 17:09:22 -0500 2012
Processing by LocationsController#create as HTML
Parameters: {"commit"=>"Add", "location"=>{"name"=>"name", "description"=>"description"}, "authenticity_token"=>"7rT1/3qSn/Kz1cGg8iTFCKbkO0W/L7ETT+lNcSSN6FI=", "utf8"=>"\342\234\223"} (0.1ms)  begin transaction
SQL (5081.3ms)  INSERT INTO "locations" ("created_at", "description", "name", "updated_at") VALUES (?, ?, ?, ?)  [["created_at", Wed, 25 Jan 2012 22:09:22 UTC +00:00], ["description", "description"], ["name", "name"], ["updated_at", Wed, 25 Jan 2012 22:09:22 UTC +00:00]]
SQLite3::BusyException: database is locked: INSERT INTO "locations" ("created_at", "description", "name", "updated_at") VALUES (?, ?, ?, ?)
(0.2ms)  rollback transaction
SQLite3::BusyException: cannot rollback transaction - SQL statements in progress: rollback transaction 
Completed 500 Internal Server Error in 5084ms

ActiveRecord::StatementInvalid (SQLite3::BusyException: cannot rollback transaction - SQL statements in progress: rollback transaction): app/controllers/locations_controller.rb:8:in `create'

Rendered /Library/Ruby/Gems/1.8/gems/actionpack 3.2.0/lib/action_dispatch/middleware/templates/rescues/_trace.erb (0.8ms)
Rendered /Library/Ruby/Gems/1.8/gems/actionpack 3.2.0/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (0.8ms)
Rendered /Library/Ruby/Gems/1.8/gems/actionpack 3.2.0/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (3.9ms)

tl;dr: calling .save fails and returns SQLite3::SQLException: cannot start a transaction within a transaction: begin transaction

8
  • Please add the full stack trace if you can. The code looks on first glance like it should work, so more context for the error would be helpful. Commented Jan 25, 2012 at 22:03
  • also add the Location model code Commented Jan 25, 2012 at 22:04
  • Application trace: app/controllers/locations_controller.rb:8:in `create' Commented Jan 25, 2012 at 22:04
  • @<JesseWolgamott> i did. tables exist Commented Jan 25, 2012 at 22:13
  • Are you sure there aren't any other processes running that might be using the database? (I'm asking because of the 'SQLite3::BusyException: database is locked' error) Commented Jan 25, 2012 at 22:19

1 Answer 1

1

This error gives it away:

SQLite3::BusyException: database is locked

There's probably another process running that is using the database at the same time.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.