2012-12-21 41 views
0

我最近在我的Mac Mini服務器上做了一個乾淨的Lion服務器安裝,然後立即升級到Mountain Lion而不復制我的任何數據從我的備份文件。然後我重新安裝了我的Rails應用程序並將它們部署到生產環境(同一臺機器)。我還將我在Lion Server下創建的PgAdmin備份文件,並在升級到Mountain Lion後使用它重建了我的數據庫。與PostgreSQL 9.2.1和pg_dump版本9.1.4(Rails 3.2.9)的服務器版本衝突

當我進入PostgreSQL終端時,我收到以下消息。我用這個工作的基本命令沒有任何問題。

psql (9.1.4, server 9.2.1) 
WARNING: psql version 9.1, server version 9.2. 
     Some psql features might not work. 
Type "help" for help. 

我還與我的Rails應用程序執行queue_classic寶石問題,因爲它說,PSQL的服務器版本是9.2.1,但pg_dump的是9.1.4版本。

的psql --version產生的psql(PostgreSQL的)9.1.4

的pg_dump --version在我的Rails應用程序產生的pg_dump(PostgreSQL的)9.1.4

我是用寶石第0.12.2。現在我正在使用版本0.14.1。在升級到Mountain Lion的同時仍然使用0.12.2版本後,問題就開始了。當我重建我的Rails應用程序時,數據庫是在PgAdmin中手動創建的。我做了rake db:migrate來重建表結構和索引。然後我用我的PgAdmin tar備份文件重建數據。

我試圖安裝phpPgAdmin的最新穩定版本。我遇到了問題,因爲PostgreSQL中有一個缺失的列。 PostgreSQL的文檔聲明該列在9.2版本中被刪除。此時我確定數據庫是9.2.1。當時我還假設那是Mountain Lion安裝的版本。我在這個假設上錯了。

然後,我重新安裝了PgAdmin進行數據庫維護,以便使用備份恢復我的數據庫。當我檢查Rails應用程序中使用的數據庫屬性時,它說它是PostgreSQL 9.2.1數據庫。

這些是我安裝的與PostgreSQL有關的唯一軟件包。我沒有在我的機器上安裝PostgreSQL的另一個版本,除非這些軟件包中有一個做了我不知道的事情。

我不使用自制軟件,MacPorts或任何類似的工具。我可能在某個時候。

當我在/ usr中執行psql的Finder搜索時,我只能在/ usr/bin中找到一個文件。我的猜測是版本9.1.4。

我讀過的所有研究都是關於自己安裝了PostgreSQL的其他版本的人。這可能聽起來很愚蠢,但我怎麼能創建一個PostgreSQL版本高於當前安裝的數據庫?這顯然是我從備份中重建數據庫時發生的情況,即使我沒有指定版本。我該如何解決這個問題?我想使用9.2.1版本,因爲我相信這是PostgreSQL的最新穩定版本。我非常樂於接受建議。我只需要我的數據庫以某種方式匹配我正在使用的PostgreSQL版本,所以我不會因使用檢查psql和pg_dump版本的gem或其他PostgreSQL進程而受到阻礙。我想我有兩個選擇,要麼以某種方式安裝PostgreSQL 9.2.1,要麼在9.1.4下重新創建我的數據庫。我只是想知道安裝了兩個PostgreSQL版本。

任何幫助,將不勝感激。

回答

0

發生此錯誤是因爲不能保證轉儲將包含在新版本中提供新功能的所有內容。實際上,由於系統目錄中的可能更改,不能保證它可以工作,所以這些工具通常會生成警告,但pg_dump將會失敗。您應該可以手動轉儲數據。所以像Ruby這樣的其他工具可能會更謹慎地處理警告。

但是,如果您安裝了PostgreSQL 9.2.1,我也希望您也應該擁有所有相關的客戶端工具。您可以通過簡單地在系統中搜索pg_dump和psql並查看是否可以找到新版本(可能同時安裝了這兩個版本)來解決此問題。這聽起來像是你這樣做的,但看到Postgresql 9.2 pg_dump version mismatch,它有一些特定於mac的回答,這表明你想使用的版本不在/ usr中。

下一步的確應該看看PostgreSQL的安裝方式,並找出可能缺少工具的原因。