Skip to content

Instantly share code, notes, and snippets.

@jeremyevans
Forked from jmhodges/gist:31356
Created December 3, 2008 00:46
Show Gist options
  • Save jeremyevans/31367 to your computer and use it in GitHub Desktop.
Save jeremyevans/31367 to your computer and use it in GitHub Desktop.
$ ruby -I lib bin/sequel -E sqlite:/
Your database is stored in DB...
irb(main):001:0> class AddFoosMigration < Sequel::Migration
irb(main):002:1> def up
irb(main):003:2> create_table :foos do
irb(main):004:3* primary_key :id
irb(main):005:3> string :name
irb(main):006:3> end
irb(main):007:2> end
irb(main):008:1>
irb(main):009:1* def down
irb(main):010:2> drop_table :foos
irb(main):011:2> end
irb(main):012:1> end
=> nil
irb(main):013:0> AddFoosMigration.apply(DB, :up)
I, [2008-12-02T16:44:15.529435 #22819] INFO -- : CREATE TABLE `foos` (`id` integer PRIMARY KEY AUTOINCREMENT, `name` string)
=> ["CREATE TABLE `foos` (`id` integer PRIMARY KEY AUTOINCREMENT, `name` string)"]
irb(main):014:0> AddFoosMigration.apply(DB, :down)
I, [2008-12-02T16:44:20.169365 #22819] INFO -- : DROP TABLE `foos`
=> [:foos]
irb(main):015:0> DB.transaction{AddFoosMigration.apply(DB, :up)}
I, [2008-12-02T16:44:24.337881 #22819] INFO -- : CREATE TABLE `foos` (`id` integer PRIMARY KEY AUTOINCREMENT, `name` string)
=> ["CREATE TABLE `foos` (`id` integer PRIMARY KEY AUTOINCREMENT, `name` string)"]
irb(main):016:0> DB.transaction{AddFoosMigration.apply(DB, :down)}
I, [2008-12-02T16:44:34.261840 #22819] INFO -- : DROP TABLE `foos`
=> [:foos]
irb(main):017:0> DB.transaction{DB.drop_column :foos, :name}
I, [2008-12-02T16:44:58.650016 #22819] INFO -- : PRAGMA table_info(`foos`)
I, [2008-12-02T16:44:58.650425 #22819] INFO -- : BEGIN TRANSACTION
Sequel::DatabaseError: SQLite3::SQLException cannot start a transaction within a transaction
from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/lib/sqlite3/errors.rb:62:in `check'
from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/lib/sqlite3/resultset.rb:56:in `check'
from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/lib/sqlite3/resultset.rb:48:in `commence'
from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/lib/sqlite3/resultset.rb:38:in `initialize'
from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/lib/sqlite3/statement.rb:135:in `new'
from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/lib/sqlite3/statement.rb:135:in `execute'
from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/lib/sqlite3/database.rb:226:in `execute_batch'
from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/lib/sqlite3/database.rb:157:in `prepare'
from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/lib/sqlite3/database.rb:225:in `execute_batch'
from ./lib/sequel_core/adapters/sqlite.rb:51:in `execute_dui'
from ./lib/sequel_core/adapters/sqlite.rb:92:in `_execute'
from ./lib/sequel_core/connection_pool.rb:102:in `hold'
from ./lib/sequel_core/database.rb:361:in `synchronize'
from ./lib/sequel_core/adapters/sqlite.rb:92:in `_execute'
from ./lib/sequel_core/adapters/sqlite.rb:51:in `execute_dui'
from ./lib/sequel_core/database.rb:256:in `execute_ddl'
from ./lib/sequel_core/database/schema.rb:45:in `alter_table'
from ./lib/sequel_core/database/schema.rb:45:in `each'
from ./lib/sequel_core/database/schema.rb:45:in `alter_table'
from ./lib/sequel_core/database/schema.rb:94:in `drop_column'
from (irb):17
from ./lib/sequel_core/adapters/sqlite.rb:77:in `transaction'
from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/lib/sqlite3/database.rb:564:in `transaction'
from ./lib/sequel_core/adapters/sqlite.rb:77:in `transaction'
from ./lib/sequel_core/connection_pool.rb:109:in `hold'
from ./lib/sequel_core/database.rb:361:in `synchronize'
from ./lib/sequel_core/adapters/sqlite.rb:73:in `transaction'
from (irb):17irb(main):018:0>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment