sql >> Databasteknik >  >> RDS >> PostgreSQL

Rails + Postgres drop-fel:databas nås av andra användare

Om du dödar de körande postgresql-anslutningarna för din applikation, kan du köra db:drop alldeles utmärkt. Så hur dödar man dessa kopplingar? Jag använder följande rake-uppgift:

# lib/tasks/kill_postgres_connections.rake
task :kill_postgres_connections => :environment do
  db_name = "#{File.basename(Rails.root)}_#{Rails.env}"
  sh = <<EOF
ps xa \
  | grep postgres: \
  | grep #{db_name} \
  | grep -v grep \
  | awk '{print $1}' \
  | xargs kill
EOF
  puts `#{sh}`
end

task "db:drop" => :kill_postgres_connections

Att döda anslutningarna från under skenorna kommer ibland att göra att den spärrar nästa gång du försöker ladda en sida, men om du laddar om den igen återupprättas anslutningen.



  1. SQL Server Konvertera heltal till binär sträng

  2. Använder grupp efter på två fält och räkna i SQL

  3. Varför använder Oracle DBMS_STATS.GATHER_TABLE_STATS?

  4. Hur Sinh() fungerar i PostgreSQL