簡體   English   中英

pg_restore或pg_dump是否將語句添加到架構?

[英]Does pg_restore or pg_dump add statements to the schema?

我有一段時間以來一直在使用的數據庫。 我稍微改進了它的架構,並希望比較新架構和舊架構之間的差異,因此我轉儲了兩個架構並進行了比較。 在舊架構中,我看到了一些在新架構中不可見的“ OPERATOR FAMILY”語句。 如果有什么不同,那么這些“ OPERATOR FAMILY”語句與PostgreSQL的tsearch2 contrib軟件包有關(例如:“ CREATE OPERATOR FAMILY gin_tsvector_ops”等)。 在兩個模式中都存在與tsearch2運算符相關的'OPERATOR CLASS'語句。 盡管在兩個模式中都找到了“ OPERATOR CLASS”語句,但所有添加的“ OPERATOR CLASS”語句之后都帶有相同名稱的“ OPERATOR CLASS”語句。

真正奇怪的是,當我使用新模式創建數據庫時,使用pg_dump轉儲其模式,使用pg_restore將其還原到另一個數據庫中,然后再次轉儲-顯示“ OPERATOR FAMILY”語句! 我grep了contrib目錄,但找不到任何“創建操作者家庭”語句。

任何人都有類似的經歷嗎? 有什么想法可能會引入這些陳述嗎?

為了回應您的評論,我猜想是PostgreSQL版本遷移引起的。 在7.2中,tsearch2是一個外部contrib模塊,但在PostgreSQL 8.3中,它已集成到核心中。 因此,那些缺少的操作者族可能來自PostgreSQL 8.3的pg_catalog,而不是您自己的模式。

但是我認為您可以使用contrib/uninstall_tsearch2.sql腳本(通常在/usr/share/postgresql-VER/contrib/ )進行修復,以卸載后再使用contrib/tsearch2.sql腳本重新安裝。 忽略任何錯誤,這些錯誤應該是安全的,因為您不能刪除表中當前使用的類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM