2011-10-26 15 views
2

在使用PostgreSQL作爲Yesod的持久性解決方案時,我似乎遇到了問題。在Yesod中使用PostgreSQL時缺少postgres.yml文件

我按照'Yesod in five minutes'指南中的步驟操作。

我用腳手架來創建一個項目。選擇選項t時,一切進展順利,我可以看到該應用程序:http://localhost:3000

然而,當我選擇的PostgreSQL數據庫,我得到了以下錯誤鍵入「耶索德devel的」命令

Registering FirstYesod-0.0.0... 
Starting development server... 
Starting devel application 
devel.hs: InvalidYaml (Just "YamlException \"Yaml file not found: config/postgres.yml\"") 
Devel application launched, listening on port 3000 
Exit code: ExitFailure 11 

這是YAML文件的東西,本來應該由我加入後,還是應該安裝過程提供了它? 如果是這樣,有沒有人知道爲什麼它沒有創建?

我使用PostgreSQL 8.4.9。

devel.hs: InvalidYaml (Just "YamlException \"Yaml file not found: config/postgres.yml\"") 

和:

$ ls config 
favicon.ico models postgresql.yml routes settings.yml 

所以只要複製如果你看看你會看到生成的yml和打開的文件有不同的名稱,它工作正常用psql與pgAdmin的III

回答

2

(或移動)該文件:

$ cp config/postgresql.yml config/postgres.yml 

現在,您會看到一個新的錯誤,即postgres QL具體:

devel.hs: SqlError {seState = "", seNativeError = 1, seErrorMsg = "connectPostgreSQL: FATAL: password authentication failed for user \"B\"\nFATAL: password authentication failed for user \"B\"\n"} 

我不是一個DB的人,但如果你知道的答案,這一個(在什麼命令運行後psql鍵入條件),那麼我所有的耳朵;-) 。

+1

這意味着您需要使用指定的用戶名/密碼創建數據庫。另外,我爲這個bug打開了一個Github的問題:https://github.com/yesodweb/yesod/issues/167 –

+0

我做了什麼使所有工作都成功:我在yesod中創建了一個名爲rj的項目。然後,在postres中,我創建了一個用戶rj(CREATE USER rj;)和一個名爲rj(CREATE DATABASE rj WITH OWNER rj)的數據庫。請注意,小寫字母很重要,因爲我無法讓Postgres創建包含大寫字符的數據庫名稱。很高興知道Heskell源代碼的連接是在哪裏進行的,因爲我希望在項目名稱中使用大寫字母。無論如何,感謝您的幫助。 – user1013013