Dear list,
I am in the process of writing on an app with is already running. I
need to create a couple of structural database changes for which I use
migrations. However I want to be absolutely sure I do not destroy any
existing data. So RSpec is the way to go! Or so I thought.
1. dropped the test database.
2. create the database.
3. migrate to the version just before the critical migration
4. insert some stuff in the database
5. run the critical migration
6. see if the result is as I expected
But I receive the following error:
Mysql::Error: #HY000Lock wait timeout exceeded; try restarting
transaction: ALTER TABLE `members` DROP `manager`
And I do not know if this is the way forward. Does any one have any
(relevant) thoughts on this?
With kind regards,
Harm
PS the actual spec:
describe Member, "should migrate properly" do
it "should migrate correctly from a column manager to a role
manager" do
`rake db:drop`
`rake db:create`
`rake db:migrate VERSION=59`
m1 = Member.new(:manager => true)
m1.save_with_validation(false)
m2 = Member.new(:manager => true)
m2.save_with_validation(false)
m3 = Member.new(:manager => true)
m3.save_with_validation(false)
`rake db:migrate VERSION=60`
Member.find(m1.id).has_role?("manager").should be_true
Member.find(m2.id).has_role?("manager").should be_true
Member.find(m3.id).has_role?("manager").should be_true
end
end