sql >> Base de Datos >  >> RDS >> PostgreSQL

Error de caída de Rails + Postgres:otros usuarios están accediendo a la base de datos

Si elimina las conexiones postgresql en ejecución para su aplicación, puede ejecutar db:drop sin problemas. Entonces, ¿cómo matar esas conexiones? Uso la siguiente tarea de rake:

# 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

Eliminar las conexiones debajo de los rieles a veces hará que vomite la próxima vez que intente cargar una página, pero volver a cargarla restablece la conexión.