Erlang ODBC连接挑战

时间:2011-10-20 15:54:30

标签: sql sql-server database oracle erlang

我运行了Oracle 10g第2版,从我的sqlplus开始,Oracle DB监听器已启动并运行,我可以向数据库发出并执行命令,如下所示

bash-3.00$ sqlplus /nolog

SQL*Plus: Release 10.2.0.2.0 - Production on Thu Oct 20 18:33:33 2011

Copyright (c) 1982, 2005, Oracle.  All Rights Reserved.

SQL> connect system/muzaaya
Connected.
SQL> create table fruits (
  2  fruit_name VARCHAR(30) PRIMARY KEY,
  3  fruit_biological_name VARCHAR2(50),
  4  fruit_quantity INT NOT NULL,
  5  fruit_location VARCHAR(20) NOT NULL);

Table created.

SQL>

然后我到这里: http://www.datadirect.com/download.html 让我自己成为Oracle的ODBC连接器。我下载并安装在Windows 7 64位上。然后我继续使用我的窗口Windows ODBC Administrator配置数据源。我创建一个名为D1的DSN,输入描述,服务器名称,客户端版本,用户名和密码,最后我测试连接,连接完全建立!

在此之后,我转到我的erlang并开始我们的odbc应用程序,这是下面发生的事情:

1> odbc:start().
ok
2> odbc:connect("DSN=D1;UID=system;PWD=muzaaya", []).
{error,"[Microsoft][ODBC Driver Manager] The specified DSN contains an 
architecture mismatch between the Driver and Application SQLSTATE IS: 
IM014 Connection to database failed."}

这是什么意思?以及如何更正它以便从Erlang连接到我的Oracle DB?

有人可以给我任何来自Erlang的Oracle特定ODBC连接示例(如果有的话)或者使用不同语言的相关经验,以便我可以在这里和那里进行比较和更改吗?

是否需要在我们的Erlang ODBC连接中指定更多参数才能连接到ORACLE,例如tnsnames.ora,spfile, or pfile,而不是我在ODBC设置中指定的参数?< / b>

1 个答案:

答案 0 :(得分:2)

在我看来,这就像是“架构不匹配”。我之前从未使用过odbc,但快速谷歌搜索返回了以下结果:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms712362(v=vs.85).aspx

你在哪里读到:

  

如果使用64位odbcad32.exe配置或删除DSN   连接到32位驱动程序,例如,驱动程序执行Microsoft Access   (* .mdb),您将收到以下错误消息:

     

指定的DSN包含架构不匹配   驱动程序和应用程序

然后提出了一个解决方案:

  

要解决此错误,请使用32位odbcad32.exe配置或   删除DSN。