Hi, I have developed a little web app with a sqlite3 database in development environment. Now I switched over to mysql2 for production environment. At a first look everthing looks good! BUT, I have delayed_jobs that run methods in the background, where two nested active records were compared with "if hash1 == hash2", then it should just show whether they are the same or not. With mysql2 in production, it shows randomly entries which should have changed, but they didn''t! What I found strange is that it is really random!!! Again with sqlite3 in production or development it is working as intended!!! I checked this in both environments, so that the issues doesn''t occur only in production mode. I checked it also with mysql2 in development environment, there I have the same issue that randomly entries were shown that shoould have changed, but didn''t in reality. Finally I think it has something to do with the mysql2 database!!! Has anybody an idea??? My database.yml looks like this: # SQLite version 3.x # gem install sqlite3 production: adapter: sqlite3 database: db/development.sqlite3 pool: 5 timeout: 5000 # Warning: The database defined as "test" will be erased and # re-generated from your development database when you run "rake". # Do not set this db to the same as development or production. test: adapter: sqlite3 database: db/test.sqlite3 pool: 5 timeout: 5000 development: adapter: mysql2 encoding: utf8 database: patent_production pool: 5 username: xxx password: xxx host: localhost I really hope someone can help, because I am searching now for over two days and don''t find a solution. I can of course deploy on a sqlite3 db, but I read recommendation to do it rather on mysql. Cheers, Sebastian -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Sebastian
2011-Jul-18 06:38 UTC
Re: Rails 3 app has strange behaviour with Mysql2 database
I am using the following code in Check.rb model as a delayed_job. The code runs through every existing entry and looks up if there are new legalevents: class Check < Struct.new(:id) def perform @watchedfamily.watchedmembers.each do |member| new_legal = [] old_legal = [] member.legalevents.order("gaz_date").each do |newleg| new_legal << newleg.attributes.except("id", "created_at", "updated_at", "watchedmember_id") end mem = OldWatchedmember.find(:first, :conditions => { :Pub_No => member.Pub_No }).old_legalevents.order("gaz_date") mem.each do |oldleg| old_legal << oldleg.attributes.except("id", "created_at", "updated_at", "old_watchedmember_id") end if !(old_legal == new_legal) @watchedfamily.update_attributes(:has_changed => true) break end end end end The code is recognizing when there are new_legal events and is highlighting the changes. But the code also shows me entries that not have been changed, meaning where "old_legal == new_legal" is actually false, but it shows me it is true on random entries. This is working great with sqlite3, but not with mysql2. I am pretty new to RoR and I don''t have a clue why this is happening. Maybe this is because of concurrency and the mysql db has still something in cache that makes the comparing of two equal entries result false...?!? I really hope that some can give me a hint, how to solve this or isolate the problem! Sebastian On 15 Jul., 15:15, Sebastian <sebastian.go...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote:> Hi, > > I have developed a little web app with a sqlite3 database in > development environment. Now I switched over to mysql2 for production > environment. At a first look everthing looks good! > > BUT, I have delayed_jobs that run methods in the background, where two > nested active records were compared with "if hash1 == hash2", then it > should just show whether they are the same or not. With mysql2 in > production, it shows randomly entries which should have changed, but > they didn''t! What I found strange is that it is really random!!! > > Again with sqlite3 in production or development it is working as > intended!!! I checked this in both environments, so that the issues > doesn''t occur only in production mode. I checked it also with mysql2 > in development environment, there I have the same issue that randomly > entries were shown that shoould have changed, but didn''t in reality. > > Finally I think it has something to do with the mysql2 database!!! Has > anybody an idea??? > > My database.yml looks like this: > # SQLite version 3.x > # gem install sqlite3 > production: > adapter: sqlite3 > database: db/development.sqlite3 > pool: 5 > timeout: 5000 > > # Warning: The database defined as "test" will be erased and > # re-generated from your development database when you run "rake". > # Do not set this db to the same as development or production. > test: > adapter: sqlite3 > database: db/test.sqlite3 > pool: 5 > timeout: 5000 > > development: > adapter: mysql2 > encoding: utf8 > database: patent_production > pool: 5 > username: xxx > password: xxx > host: localhost > > I really hope someone can help, because I am searching now for over > two days and don''t find a solution. I can of course deploy on a > sqlite3 db, but I read recommendation to do it rather on mysql. > > Cheers, > Sebastian-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.