2012-12-06 69 views
1

我無法丟棄我的Postgres數據庫的Rails應用程序 - 從源碼部署到Heroku的後最近切換。當我運行rake任務彙總數據並填充數據庫,耙分貝:創建分貝:遷移所有的作品,但DB:降不工作。運行rake數據庫後,我在終端中出現以下錯誤:drop db:migrate db:create all。 'all'是一個聚合器的耙子任務。的Postgres DROP DATABASE與rake命令

Couldn't drop something_development : #<PG::Error: FATAL: database "postgres" does not exist 
> 
Couldn't drop something_test : #<PG::Error: could not connect to server: No such file or directory 
    Is the server running locally and accepting 
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"? 
> 
something_development already exists 
could not connect to server: No such file or directory 
Is the server running locally and accepting 
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?  

「這是看我的database.yml文件...`

development: 
    adapter: postgresql 
    host: localhost 
    database: something_development 

    username: username 


test: 
    adapter: postgresql 
    database: something_test 
pool: 5 
timeout: 5000 

production: 
adapter: postgresql 
host: localhost 
username: username 
database: something_production 

而且,這裏是在psql命令行的數據庫列表:

          List of databases 
     Name   |  Owner  | Encoding | Collate | Ctype |   Access privileges   
----------------------+-----------------+----------+---------+-------+------------------------------------- 
username    | username  | UTF8  | en_US | en_US | 
something_development | username  | UTF8  | en_US | en_US | 
template0    | username  | UTF8  | en_US | en_US | =c/username+   |     |   |   |  | username=CTc/username 
template1    | username  | UTF8  | en_US | en_US | =c/username +  |     |   |   |  | username=CTc/username 
(4 rows) 

編輯 - 我正在努力在推動heroku發展之前做到這一點。我是否需要爲我的用戶名添加訪問權限?我嘗試了GRANT UPDATE ON something_development TO username,但收到ERROR:關係「something_development」不存在。請記住對於Heroku - 謝謝。

有沒有人有什麼可能發生的或任何想法,可能指向我的方向是正確的一些資源?感謝任何幫助 - 謝謝。

回答

0

在Heroku上,你不必爲刪除數據庫的權限,你要做的

heroku pg:reset 

如果你的數據庫是不是在Heroku上,檢查用戶(postrgesql的)的權限。

+0

我試圖推到之前的Heroku爲此在發展。我是否需要爲我的用戶名添加訪問權限?我試圖GRANT UPDATE ON something_development TO用戶名,但收到的錯誤:關係「something_development」不存在。請記住對於Heroku - 謝謝。 – pvskisteak5

+0

在postgresql中創建數據庫我只是做 \t CREATE USER my_user; \t CREATE DATABASE my_db OWNER my_user; \t ALTER USER my_user WITH ENCRYPTED PASSWORD'password'; \t ALTER ROLE my_user WITH CREATEDB; –

+0

在完成這個操作並在psql中列出數據庫之後,我的用戶名仍然沒有出現在針對something_development的訪問權限下。當運行你建議的CREATE命令時,它表示它們已經存在。我還爲my_user授予了對something_development的訪問權限,這會在psql中列出所有數據庫時顯示。 – pvskisteak5

1

首先,你應該確保那種其中的Postgres數據庫使用在Heroku:共享DB或Heroku的Postgres的。

如果您使用的共享數據庫(它的建議,不應該使用更多),不幸的是你必須刪除你的Heroku應用程序,並重新創建新的使用相同的應用程序名稱。

如果使用Heroku的PG,你可以在這裏找到你的DB:https://postgres.heroku.com/databases,只是破壞,並添加另一個數據庫,它就像刪除並重新創建您的數據庫,在這之後您可以運行遷移以及。隨着Heroku的PG,我不知道我們是否可以運行分貝:掉落(它已經有一段時間,因爲我是不能在Heroku上使用這個命令)

關於配置應遵循以下幾個步驟:

使用的pgAdmin III或類似的東西來嘗試連接到您的PG服務器上安裝寶石PG

。如果成功,請將這些信息用於您的database.yml文件。

注意:當您將代碼推送到Heroku時,Heroku會根據他們的PG服務器信息自動創建新的database.yml,因此您不需要關心Heroku上的配置數據庫。記住推你的應用的Heroku

+0

在heroku上沒有問題 - 一切正常。只是不使用postgres進行開發,根據我的理解,這很常見。謝謝(你的)信息。 – pvskisteak5

0

想通了這個問題之前移除源碼寶石 - 原來你不能重命名數據庫「Postgres的」,因爲它需要一個管理數據庫。我曾嘗試將postgres重命名爲something_development。爲了解決這個問題,我創建了一個postgres數據庫。