Hi Everyone,

I would like some help with a MySQL runtime error in my application. The 
error is:

Mysql::Error: Table 'urbmi5_drupal.country_stateprovince' doesn't exist: SHOW 
FULL FIELDS FROM `country_stateprovince`


The problem with this query is that it is running on the wrong database. 
Also, when I am in the rails console, I can query all the databases in my 
application without a problem.

So here's a quick overview of my database setup... the application has 3 
databases -- the first is a standard rails database, and the other two are 
legacy databases included via a gem for reuseability. The credentials for 
all 3 databases are read in from database.yml. In any models associated 
with the legacy database, I am calling establish_connection(...) with the 
appropriate key into the database.yml. I also tried setting the 
"table_name_prefix" with the name of the correct database in the model that 
appears to be giving me trouble, e.g. self.table_name_prefix = 
"techmi5_voleng.", but that doesn't help.

If that sounds too theoretical, here is some code, specifically from the 
model that I think is failing to load:

module Techmi5Voleng
  class Province < ActiveRecord::Base
    include ChrisvolModelage::Techmi5Voleng::Connection
    
    self.table_name = "country_stateprovince"
    self.primary_key = "state_code"
    
    def country
      Techmi5Voleng::Country.find(:first, :conditions => "UCASE(iso3) = 
UCASE('#{self.country_code}')")
    end
  end
end

And for the database connection modules that it references (on the third 
line):

module ChrisvolModelage
  module Techmi5Voleng
    module Connection
      def self.included(model)
        ChrisvolModelage::db_connect(model, :techmi5_voleng)
      end
    end
  end
end

module ChrisvolModelage
  def self.db_connect(model, yml_key)
    yml_key = yml_key.to_s
    yml_key += "_#{ENV['RAILS_ENV']}" if ENV['RAILS_ENV']
    
model.establish_connection(YAML.load(File.read('config/database.yml'))[yml_key])
  end
end

One final comment is that it looks like the error is triggered as soon as 
the application references a model from _the other_ legacy database (not 
used by the model that is failing to load), urbmi5_drupal. I added the 
urbmi5_drupal models to the gem first, and they worked fine independently. 
So it seems that when the application first loads an urbmi5_drupal model, 
it tries to load the techmi5_voleng models as well, but it has the wrong 
database selected.

I am very stumped, so I would appreciate any help!

Best,
Jim

-- 
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@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msg/rubyonrails-talk/-/RCygqKCm4hoJ.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to