符号未定义Java_Java ODBC数据源(未定义符号:SQLAllocEnv)

我有以下Java代码。该代码的目的是建立与远程MySQL数据库ProductionDb(在我的/etc/odbc.ini文件中定义的数据源)的连接。

import java.sql.*;

import java.util.*;

import java.io.*;

public class Test {

public static void main(String[] args) {

try {

Connection conn = null;

PreparedStatement s = null;

String driver = "sun.jdbc.odbc.JdbcOdbcDriver";

Class.forName(driver).newInstance();

conn = DriverManager.getConnection("jdbc:odbc:ProductionDb");

} catch (Exception ex) {

System.out.println(ex.getMessage());

}

}

}

/etc/odbc.ini文件是:

$ cat /etc/odbc.ini

[ProductionDb]

Driver = /usr/lib/odbc/libmyodbc.so

Description = Production Database

Server = [ hidden ]

Port = 3306

User = [ hidden ]

Password = [ hidden ]

Database = ProductionDb

顺便说一句-我正在使用Java 7和Ubuntu:

$java -version

java version "1.7.0_09"

Java(TM) SE Runtime Environment (build 1.7.0_09-b05)

Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)

$lsb_release -a

No LSB modules are available.

Distributor ID: Ubuntu

Description: Ubuntu 11.04

Release: 11.04

Codename: natty

当我尝试运行程序时,出现以下错误:

$java Test

java: symbol lookup error: /usr/lib/jvm/java-7-oracle/jre/lib/amd64/libJdbcOdbc.so: undefined symbol: SQLAllocEnv

有谁知道为什么我会收到此错误?这是怎么了

PS顺便说一句,我确实运行了sudo apt-get install unixodbc-dev,sudo apt-get install

libmyodbc和sudo apt-get install libmysql-java :-)

更新:

我还尝试了以下答复之一(由Benny

Hill提出)提出的想法:使用/etc/odbcinst.ini以及/etc/odbc.ini。仍然不起作用,并且我得到了相同的错误消息。

$ cat /etc/odbc.ini

[ProductionDb]

Driver = MySQL Driver

Description = Production Database

Server = [ hidden ]

Port = 3306

User = [ hidden ]

Password = [ hidden ]

Database = ProductionDb

$ cat /etc/odbcinst.ini

[MySQL Driver]

Driver = /usr/lib/odbc/libmyodbc.so

补充说明:

我可以通过R编程语言成功使用此ODBC数据源。

> library(odbc)

> con = odbcConnect("ProductionDb")

> con

RODBC Connection 1

Details:

case=nochange

DSN=ProductionDb

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值