Linux下Erlang使用UnixODBC连接数据库

erlang有个odbc的模块可以使用传统的数据库,配置步骤如下:

在ubuntu下首先安装这几个包:
apt-get -y install unixodbc unixodbc-bin libmyodbc

当然要先安装这几个包才能顺利编译erlang.

然后
cp /usr/share/libmyodbc/odbcinst.ini /etc/

然后
root@yufeng-desktop:~# cat /etc/odbc.ini   
[MySQL-Test]
Description =  test
Driver = /usr/lib/odbc/libmyodbc.so
Server = localhost
Database = test
Port = 3306

unixODBC 有 2 個圖形化介面工具可以使用,分別是:
ODBCConfig
DataManager
运行它们 确保你的数据源可用。

再来验证下
root@yufeng-desktop:~# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.0.67-0ubuntu6 (Ubuntu)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> select version();
+-----------------+
| version()       |
+-----------------+
| 5.0.67-0ubuntu6 |
+-----------------+
1 row in set (0.00 sec)

mysql> Aborted

如果都没有问题 成功一半了。
root@yufeng-desktop:/etc# erl
Erlang R13B (erts-5.7.1) [source] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.7.1  (abort with ^G)
1> application:start(odbc).
ok
2> {ok, Ref}=odbc:connect("DSN=MySQL-Test;UID=root;PWD=", [{trace_driver, on}]).
{ok,<0.42.0>}
3> odbc:sql_query(Ref, "select version();").
{selected,["version()"],[{"5.0.67-0ubuntu6"}]}
4> odbc:disconnect(Ref).
ok
5>

O yeah, 可以使用这些传统的数据了.

另外pstree看下:

├─sshd───sshd─┬─bash───beam.smp─┬─odbcserver───{odbcserver}
     │             │                 └─5*[{beam.smp}]
     │             ├─bash───pstree
     │             └─bash───wget

也就是说odbc是作为一个OS进程运行的 这样保证了erl的稳定性。

你可能感兴趣的:(linux,mysql,erlang,ubuntu,bash)