PG :: ConnectionBad: PQsocket () не может получить дескриптор сокета: ROLLBACK при удалении записи - PullRequest
0 голосов
/ 22 марта 2020

Запуск:

Price.find(208999).delete

в рельсовой консоли , приводит к сообщению об ошибке:

SQL (0.0ms)  DELETE FROM "prices" WHERE "prices"."id" = $1  [["id", 208999]]
ActiveRecord::StatementInvalid: PG::ConnectionBad: PQsocket() can't get 
socket descriptor: DELETE FROM "prices" WHERE "prices"."id" = $1'

Последующие повторные попытки той же команды приводят к:

SQL (4.0ms)  DELETE FROM "prices" WHERE "prices"."id" = $1  [["id", 208999]]
ActiveRecord::StatementInvalid: PG::ConnectionBad: PQconsumeInput() server 
closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
: DELETE FROM "prices" WHERE "prices"."id" = $1

На данный момент я не могу выполнить какие-либо команды запроса, не столкнувшись с этой проблемой. Прежде чем запустить удаление, я могу удалить еще одну SQL из другой таблицы.

Я перепробовал все другие ссылки на переполнение стека, связанные с этой ошибкой:

Я не у меня есть какие-либо задачи rake spec / rspe c, однако я попытался rails tmp: clear , который гласит, "# Очистить файлы кэша и сокетов от ..."

Я проверил, есть ли какие-либо связи, сделанные с этой записью, с другой таблицей, однако мой поиск ничего не дал.

1 Ответ

0 голосов
/ 22 марта 2020

После нескольких часов поиска ...

Проблема заключалась в том, что в моем файле модели price.rb были указаны следующие отношения:

class Price < ApplicationRecord
    belongs_to :card

    has_and_belongs_to_many :collections

    has_many :types

    class << self # Class methods
    end
end

Я удалил price.types записи ассоциации, однако я не go по-другому и удалил card.prices записи ассоциации.

Итак, команды, которые я выполнял, где:

price = Price.find(208999)

card = price.card

#delete price_card association record
card.prices.delete(price)

#now i'll be able to delete the price record
price.delete

Для этого действительно должно быть лучшее сообщение об ошибке, поскольку я модифицировал свой файл database.yml и переустанавливал свои сокеты, потому что именно это сообщение об ошибке заставляет вас верить.

Надеюсь, это поможет другим, прежде чем они начнут возиться с конфигурацией базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...