2016-11-04 13 views
2

ich on Rails ein Ruby-entwickle App postgre Juwel mit und das ist, wie mein database.yml aussieht:Postgree zu viele Verbindungen in Schienen Konsole

development: 
adapter: postgresql 
    encoding: utf-8 
    pool: 5 
    username: "hytxlzju" 
    password: "xxxxx" 
    host: "jumbo.db.elephantsql.com" 
    port: "5432" 
    database: "hytxlzju" 

production: 
    adapter: postgresql 
    encoding: utf-8 
    pool: 5 
    username: "hytxlzju" 
    password: "xxxxxx" 
    host: "jumbo.db.elephantsql.com" 
    port: "5432" 
    database: "hytxlzju" 

Jedes Mal, wenn ich an diese anschließe lokal db, von der rails console Ich bekomme zu viele Verbindungen. Wie kann ich eine Verbindung im Code beenden, sobald der Benutzer ausgeloggt ist, in den Code, und wie kann ich eine in meinem Schienen-Konsole töten, nachdem ich fertig mit der Änderung der Tabellen?

[EDIT] Dies ist die Fehlermeldung:

C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-3.2.22.5/lib/active_record/connection_adapters/postgresql_adapter.rb:12 
22:in `initialize': FATAL: too many connections for role "hytxlzju" (PG::ConnectionBad) 

[EDIT] habe ich meine initilizer, immer noch keinen Erfolg:

Rails.application.config.after_initialize do 
    ActiveRecord::Base.connection_pool.disconnect! 

    ActiveSupport.on_load(:active_record) do 
    config = ActiveRecord::Base.configurations[Rails.env] || 
       Rails.application.config.database_configuration[Rails.env] 
    config['pool']    = ENV['DB_POOL']  || ENV['RAILS_MAX_THREADS'] || 5 
    ActiveRecord::Base.establish_connection(config) 
    end 
end 

Antwort

0

[GELÖST]

Irgendwie meine Demo-Anwendung wurde nicht die Einträge in den Tabellen zu finden, so dass es mehrere Pools Verbindungen wurde die Erstellung, ohne sie zu schließen, denn bevor die Verbindung geschlossen, ein 500-Fehler ausgelöst wurde immer, daher Das bisschen Code, wo ich den Pool geschlossen habe, wurde nie geschlossen. Mehr an postgre session hier https://devcenter.heroku.com/articles/concurrency-and-database-connections#connection-pool

1

Sie können die unten Ansatz versuchen

Active Record begrenzt die Gesamtanzahl der Verbindungen pro Anwendung über eine Datenbankeinstellung ng pool; dies ist die maximale Größe der Verbindungen Ihre Anwendung auf die Datenbank

in config/datbase.yml

pool: <%= ENV['RAILS_MAX_THREADS'] || 5 %> 

haben können, wenn Sie puma dann ENV['RAILS_MAX_THREADS']more here

Es könnte das Problem lösen, verwenden verwenden.

+0

Wie kann ich diese Verbindungen töten? Vielleicht würde das lösen –

+0

http://stackoverflow.com/questions/5108876/kill-a-postgresql-session-connection –

+0

Und kann ich diese Befehle in 'Rails dbconsole' ausführen –