2014-01-31 3 views
0

Я написал задачу rake для обновления моей базы данных, которую я делаю по модели. Я назвал функцию модели внутри моей передней задачи, как это:ActiveRecord :: ConnectionNotEstablished error

get_first_student = Student.get_first_id 

Я написал модель студента, как следующее:

class Students < ActiveRecord::Base 
attr_accessible :id, :roll_num :name, :class 
self.table_name = 'students' 

if Rails.env == "development" 
    CONN1 = establish_connection :adapter => "mysql2", 
     :database => "mydb_dev", 
     :username => "root", 
     :password => "" , 
     :host => "localhost" 

    CONN2 = establish_connection :adapter => "mysql2", 
     :database => "mydb2_dev", 
     :username => "root", 
     :password => "", 
     :host => "1.2.3.4" 
else 
    CONN1 = establish_connection :adapter => "mysql2", 
     :database => "mydb_prod", 
     :username => "root", 
     :password => "" , 
     :host => "localhost" 

    CONN2 = establish_connection :adapter => "mysql2", 
     :database => "mydb2_prod", 
     :username => "root", 
     :password => "" , 
     :host => "localhost" 
end 

def self.get_first_id 
    p "****" 
    p CONN1 
    p "****" 
    sql = %Q{SELECT MIN(id) FROM mydb.students;} 
    first_student_id = CONN1.connection.execute(sql).first[0] 
    return first_student_id 
end 

После запуска, я получаю этот следующий вывод:

#<ActiveRecord::ConnectionAdapters::ConnectionPool:0x007f948c223120 @mon_owner=nil,  
@mon_count=0, @mon_mutex=#<Mutex:0x007f948c2230d0>, @spec=#  
<ActiveRecord::Base::ConnectionSpecification:0x007f948c2232d8 @config= 
{:adapter=>"mysql2",:database=>"mydb_dev", :username=>"root", :password=>"", 
:host=>"localhost"}, @adapter_method="mysql2_connection">, @reserved_connections={}, 
@queue=#<MonitorMixin::ConditionVariable:0x007f948c223080 @monitor=# 
<ActiveRecord::ConnectionAdapters::ConnectionPool:0x007f948c223120 ...>, @cond=# 
<ConditionVariable:0x007f948c223058 @waiters=[], @waiters_mutex=# 
<Mutex:0x007f948c223008>>>, @timeout=5, @size=5, @connections=[], 
@automatic_reconnect=false> 

ActiveRecord::ConnectionNotEstablished 
+0

Похоже, что он не может подключиться - у вас есть настройка MYSQL на вашем локальном хосте? –

+0

Да, я установил настройку MYSQL в своем локальном хосте. – Joy

+0

Работает ли он при вызове запроса? –

ответ

0

В рельсах в mysql и mysql2 есть два разных адаптера для сервера mysql. Проверьте, есть ли в вашем gemfile mysql gem. Если нет, тогда откройте консоль rails и введите ActiveRecord :: Base.establish_connection («mysql: // your_username: yourpassword @ localhost/yourdatabasename»). Вы настроили сервер mysql. Вы получаете ошибку во всех средах ?. Проверьте его, войдя в mysql-сервер, используя команду «mysql -u USERNAME -p» по умолчанию своим корнем и не с паролем.

Смежные вопросы