Я пытаюсь добавить индексированные столбцы в две существующие таблицы.

add_column :places_1, :simple_geometry, :geometry, geographic: false, srid: 3857
add_index :places_1, :simple_geometry, using: :gist

add_column :places_2, :simple_geometry, :geometry, geographic: false, srid: 3857
add_index :places_2, :simple_geometry, using: :gist

Операция работает нормально с первой таблицей, но я получаю сообщение об ошибке при попытке добавить индекс во вторую таблицу.

PG :: IoError: ОШИБКА: не удалось прочитать блок 180140 в файле "base / 16384 / 1778170.1": Ошибка ввода / вывода: CREATE INDEX "index_places_2_on_simple_geometry" ON "places_2" ИСПОЛЬЗУЯ gist ("simple_geometry")

Конфигурация столбца / индекса точно такая же, поэтому я не понимаю, почему она не работает во второй таблице.

0
Yarin 15 Мар 2018 в 04:41

1 ответ

Лучший ответ

Похоже, это действительно было какое-то повреждение, так как я получил еще одну ошибку «не удалось прочитать блок», когда я попытался pg_dump таблицы:

pg_dump: сообщение об ошибке от сервера: ОШИБКА: не удалось прочитать блок 180140 в файле «base / 16384 / 1778170.1»: ошибка ввода / вывода

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

Если в будущем у меня возникнут проблемы с базой данных, я начну с новой базы данных, но на данный момент очистка данных из этой одной таблицы, похоже, сработает.

0
Yarin 15 Мар 2018 в 16:47