2011-05-29 101 views
6

我想訪問Erlang中的PostgreSQL數據庫。我下載了驅動程序epgsql,這是幾個目錄和文件,但我不明白如何使用它。如何使用epgsql驅動程序在Erlang中連接PostgreSQL?

如何編寫Erlang程序並使用epgsql驅動程序訪問PostgreSQL數據庫?

我做了一個新文件夾,並將驅動器中的src/pgsql.hrl中的所有文件複製到我的新文件夾中。然後,我創建了一個簡單的測試程序:

-module(dbtest). 
-export([dbquery/0]). 

dbquery() -> 
    {ok,C} = pgsql:connect("localhost", "postgres", "mypassword", 
            [{database, "mydatabase"}]), 
    {ok, Cols, Rows} = pgsql:equery(C, "select * from mytable"). 

然後,我開始ERL與c(pgsql).c(dbtest)編譯的模塊。 但是當我exeute dbtest:dbquery().我得到這個錯誤:

** exception error: undefined function pgsql:connect/4 
    in function dbtest:dbquery/0 

我如何能連接到使用Erlang的PostgreSQL數據庫有什麼建議?

+1

不是一個直接的答案,但 - 閱讀鋼筋。它描述瞭如何組織你的應用程序及其依賴關係。 – W55tKQbuRu28Q4xv 2011-05-29 14:32:22

回答

6

鋼筋是一個很好的使用工具,但是,我發現很好地知道你的項目應該如何構造,以便在出現問題時告訴該怎麼做。試着組織你的項目是這樣的:

/deps/epqsql/ 
/src/dbtest.erl 
/ebin 

然後cd到deps/epqsql和運行make建庫。

dbtest.erl文件還應該明確引用庫,添加此靠近頂部:

-include_lib("deps/epgsql/include/pgsql.hrl"). 

您可能需要使用該編譯代碼時,你做出改變,但一個Makefile文件(或鋼筋)現在試試這個來編譯東西:erlc -I deps/epqsql/ebin -o ebin src/dbtest.erl

測試時,確保您的載入路徑設置正確,請嘗試:erl -pz deps/epqsql/ebin/ ebin/。當erl控制檯加載時,請嘗試dbtest:dbquery().,看看會發生什麼!

我沒有在我的機器上安裝Postgresql,但是,使用此設置可以獲得更合理的外觀錯誤。

+0

我越來越make:rebar:Command not found make:*** [compile] Error 127. Check http://stackoverflow.com/questions/33485205/how-to-build-and-use-epgsql-erlang – 2015-11-02 22:45:50

相關問題