Проблема заключалась в том, что при вызове записи List
эта попытка была бы загружена в память. Колонна была настолько огромной, что даже это не сработало бы в Rails.
Мое разрешение после разговора с инженером Postgres:
Я вошел в свою производственную консоль postgres на heroku, используя heroku pg:psql -a <myapp>
. Я проверил, какое значение было для Списка 2203
SELECT "keywords"
FROM "lists"
WHERE id = 2203;
Я увидел, что в этом огромный кусок текста, и был очень счастлив, потому что впервые увидел проблему. Для начала я хотел очистить этот список
-- Doing this in a transaction, so if I don't like what happened, I can call ROLLBACK; to start over
BEGIN;
UPDATE "lists"
WHERE id = 2203
SET keywords = '';
SELECT "keywords"
FROM "lists"
WHERE id = 2203;
-- I was happy with the result as it was empty, so I committed the transaction
COMMIT;
-- If you're not happy, do ROLLBACK; to start over
Хорошо, это был один List
готово, время сделать все из них
-- not setting the WHERE as I want to do this on all of them.
BEGIN;
UPDATE "lists"
SET keywords = '';
-- here you can SELECT to do some checks at some records, see if they are empty.
COMMIT;
Вуаля, мое Rails-приложение снова начало работать быстро и больше ничего не забилось.
Надеюсь, это поможет кому-то в будущем. Вероятно, я.