我正在嘗試將 Postgresql 9.2 版的資料庫備份還原到 Postgresql 13.5,但在還原時我收到此訊息:
索引行大小 2712 超過了索引的 btree 版本 4 最大值 2704
資料庫還原顯示成功,但還原完成后資料不可用。
uj5u.com熱心網友回復:
我的猜測是,SELECT current_setting('block_size');相對于新的,這會導致一定有更大的在你的舊實體索引中包含非鍵列到超過限制時,pg_restore在插入行。您可以恢復僅架構使用--schema-onlypg_restore的選項,檢查你的指標,暫時放下他們,然后安全地恢復不僅僅是資料與--data-only。索引并不真正在備份中,它們在恢復期間從頭開始重建 - 因此您可以稍后自己進行。
這是一個關于更改 PostgreSQL 塊大小的執行緒。
uj5u.com熱心網友回復:
除非您的舊資料庫使用的是非標準塊大小(這是不常見的且不推薦的),否則您必須成為PostgreSQL v12 中此更改的受害者:
在新的 btree 索引中,最大索引條目長度減少了 8 個位元組,以改進對重復條目的處理(Peter Geoghegan)
這意味著對先前版本中索引 pg_upgrade的REINDEX操作可能會失敗。
您必須將表中的資料修改得更短一些。
另一種但不值得稱贊的解決方案是使用pg_upgrade而不是轉儲和恢復。這將使索引保持原樣。但是,您永遠無法REINDEX轉儲和恢復該資料庫。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/366790.html
標籤:PostgreSQL的
