I'm trying to use sqlite3 as my testing engine for cruisecontrol (I'm using Geoffrey Grossenbach's memory-test-fix plugin for this). When CC tries to build the schema in sqlite3, this occurs:
[snip]
-- add_index("events", ["bookmark_id"], {:name=>"bookmark_id"})
-> 0.0005s
[other stuff snipped]
-- add_index("flags", ["bookmark_id"], {:name=>"bookmark_id"})
/usr/bin/ruby -Ilib:test "/usr/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake/rake_test_loader.rb" SQLite3::SQLException: index bookmark_id already exists: CREATE INDEX "bookmark_id" ON flags ("bookmark_id")
It seems to me that the namespace for indexes in sqlite3 is database-wide, so when i make a bookmark_id index for events, i can't make the same index named "bookmark_id" on the flags table.
So I thought I'd give an explicit name to each index, hoping that the sqlite3-ruby gem would honor it. I changed my migrations to say this:
execute "alter table events add index bookmark_id_idx_events (bookmark_id)"
execute "alter table flags add index bookmark_id_idx_flags (bookmark_id)"
...and it looks like the schema.rb picks up the change:
add_index "events", ["bookmark_id"], :name => "bookmark_id_idx_events"
add_index "flags", ["bookmark_id"], :name => "bookmark_id_idx_flags"
...but when sqlite3 runs the schema.rb to build the db, it is ignoring the :name attribute, tries to make a second bookmark_id index, and keeps giving the same error.
My questions are:
1. does the sqlite3-ruby gem support named indexes?
2. If so, what am I doing wrong?
All advice is greatly appreciated!
Thanks,
-Jason
|