我感動從一個硬盤驅動器我的PostgreSQL數據庫到另一個使用移動是使用pg_dump和psql -U DB_NAME的Postgres數據庫<...結果「錯誤:關係‘表格名’不存在」
pg_dump -U postgres db_name > db_name.dump
然後
psql -U postgres db_name < db_name.dump
我在兩個實例中都以相同的方式創建了數據庫db_name。在運行我的Java程序使用JPA查詢(或JDBC查詢)的新的數據庫中,我得到這個錯誤:
"ERROR: relation "table1" does not exist"
查詢是:
select count(0) from table1
我知道我有一個連接,因爲如果我在連接參數中更改密碼,則會出現錯誤。
出於某種原因,在新的PostgresQL實例中,它認爲table1在導入的模式中不存在。
如果我更改查詢到
從myschema.table1
SELECT COUNT(0),那麼它抱怨權限:
"ERROR: permission denied for schema myschema"
爲什麼會的權限是不同的?
表table1存在於myschema中,因爲我可以在pgAdmin工具中看到它。所有行都被導入到新的PostgresQL實例中。
當我從Java執行查詢時,pg_dump和psql的組合產生了問題。
我需要做些什麼來解決這個問題?
在此先感謝。
我正在從8.3移動到8.4。我會更改我的備份腳本以使用更全面的方法。感謝您的迴應。 – 2010-08-21 16:36:21
我會爲大型數據庫添加冗長標誌(-v)到pg_restore。 'pg_restore -a -v -d dbname -Fc full.dump' – green0range 2014-03-27 20:50:56
無論如何,如果你要去'pg_restore -a',轉儲架構兩次(以純文本和壓縮)的含義是什麼?爲什麼不''pg_dump -Fc -a -v -f data.dump',例如?或者完全跳過模式步驟,只需一步完成全局變量,而另一步執行全局變量? – Air 2015-04-13 16:56:10