🛠️ После обновления ОС PostgreSQL пишет collation version mismatch
Не спешите выполнять:
ALTER COLLATION ... REFRESH VERSION;
Эта команда уберёт warning, но не проверит, что зависимые объекты перестроены.
Почему это важно?
Collation задаёт правила сравнения и сортировки строк.
Если после обновления glibc или ICU правила изменились, индексы и другие объекты могли остаться построенными по старому порядку.
Что проверить:
— точный warning;
— имя collation;
— collprovider;
— записанную версию collversion;
— фактическую версию через pg_collation_actual_version(oid);
— явные зависимости через pg_depend;
— не затронута ли default collation базы.
Для default collation базы есть отдельные сущности:
pg_database.datcollversion
pg_database_collation_actual_version(oid)
ALTER DATABASE ... REFRESH COLLATION VERSION
После этого определяют scope rebuild.
Для индексов может потребоваться REINDEX, но REINDEX DATABASE не должен быть первой реакцией. Нужно оценить размер объектов, блокировки, WAL, диск, репликацию и окно обслуживания.
Типичная ошибка:
warning
→ REFRESH VERSION
→ warning исчез
→ считаем, что всё исправлено
Но REFRESH VERSION только обновляет записанную версию в системном каталоге.
Правильный порядок:
mismatch
→ зависимости
→ безопасный rebuild
→ проверка
→ REFRESH VERSION
Вывод: collation mismatch — это не косметика. После обновления ОС нужно проверить, какие объекты могли зависеть от старых правил сравнения.
Сохраните последовательность проверки collation после обновления ОС или ICU.
🔹🔹🔹🔹
Не спешите выполнять:
ALTER COLLATION ... REFRESH VERSION;
Эта команда уберёт warning, но не проверит, что зависимые объекты перестроены.
Почему это важно?
Collation задаёт правила сравнения и сортировки строк.
Если после обновления glibc или ICU правила изменились, индексы и другие объекты могли остаться построенными по старому порядку.
Что проверить:
— точный warning;
— имя collation;
— collprovider;
— записанную версию collversion;
— фактическую версию через pg_collation_actual_version(oid);
— явные зависимости через pg_depend;
— не затронута ли default collation базы.
Для default collation базы есть отдельные сущности:
pg_database.datcollversion
pg_database_collation_actual_version(oid)
ALTER DATABASE ... REFRESH COLLATION VERSION
После этого определяют scope rebuild.
Для индексов может потребоваться REINDEX, но REINDEX DATABASE не должен быть первой реакцией. Нужно оценить размер объектов, блокировки, WAL, диск, репликацию и окно обслуживания.
Типичная ошибка:
warning
→ REFRESH VERSION
→ warning исчез
→ считаем, что всё исправлено
Но REFRESH VERSION только обновляет записанную версию в системном каталоге.
Правильный порядок:
mismatch
→ зависимости
→ безопасный rebuild
→ проверка
→ REFRESH VERSION
Вывод: collation mismatch — это не косметика. После обновления ОС нужно проверить, какие объекты могли зависеть от старых правил сравнения.
Сохраните последовательность проверки collation после обновления ОС или ICU.
🔹🔹🔹🔹