2011-05-29 10 views
6

Me gustaría acceder a una base de datos PostgreSQL en Erlang. Descargué el controlador epgsql, eran algunos directorios y archivos, pero no entiendo cómo usarlo.¿Cómo conectarse a PostgreSQL en Erlang usando el controlador epgsql?

¿Cómo puedo escribir un programa Erlang y usar el controlador epgsql para acceder a una base de datos PostgreSQL?

Creé una nueva carpeta y copié todos los archivos de src/ en el controlador y pgsql.hrl en mi nueva carpeta. Entonces creé un sencillo programa de pruebas:

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

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

Entonces empecé ERL y compilación de los módulos con c(pgsql). y c(dbtest). Pero luego, cuando me exeute dbtest:dbquery(). consigo este error:

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

Cualquier sugerencia sobre cómo puedo conectar a una base de datos PostgreSQL usando Erlang?

+1

No es una respuesta directa para usted pregunta, pero - leer sobre las barras de refuerzo. Se describe cómo organizar su aplicación y sus dependencias. – W55tKQbuRu28Q4xv

Respuesta

6

Rebar es una buena herramienta para usar, pero estoy descubriendo que es bueno saber cómo debe estructurarse su proyecto para que pueda saber qué hacer cuando las cosas van mal. Trate de organizar su proyecto como este:

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

Entonces CD en deps/epqsql y ejecutar make para construir la biblioteca.

Su archivo dbtest.erl también debe hacer referencia explícita a la biblioteca, añadir este cerca de la cima:

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

es probable que desee utilizar un Makefile (o barras de refuerzo) que compila su código cuando se realizan cambios, pero, intente esto para compilar cosas ahora mismo: erlc -I deps/epqsql/ebin -o ebin src/dbtest.erl.

Al realizar pruebas, asegúrese de que sus rutas de carga estén configuradas correctamente; intente: erl -pz deps/epqsql/ebin/ ebin/. Cuando la consola erl se carga, intente dbtest:dbquery(). y vea qué sucede.

No tengo la configuración Postgresql en mi máquina, pero pude obtener errores más razonables con esta configuración.

+0

Estoy obteniendo make: rebar: Comando no encontrado make: *** [compile] Error 127. Verifica http://stackoverflow.com/questions/33485205/how-to-build-and-use-epgsql-erlang –

Cuestiones relacionadas