Ich habe den folgenden Java-Code. Zweck dieses Codes ist es, eine Verbindung zu einer entfernten MySQL-Datenbank ProductionDb herzustellen (eine Datenquelle, die in meiner Datei /etc/odbc.ini definiert ist).Java-ODBC-Datenquelle (undefiniertes Symbol: SQLAllocEnv)
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());
}
}
}
Die /etc/odbc.ini Datei ist:
$ cat /etc/odbc.ini
[ProductionDb]
Driver = /usr/lib/odbc/libmyodbc.so
Description = Production Database
Server = [ hidden ]
Port = 3306
User = [ hidden ]
Password = [ hidden ]
Database = ProductionDb
By the way - ich bin mit Java 7 und 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
Wenn ich versuche, mein Programm zu laufen Ich erhalte den folgenden Fehler:
$java Test
java: symbol lookup error: /usr/lib/jvm/java-7-oracle/jre/lib/amd64/libJdbcOdbc.so: undefined symbol: SQLAllocEnv
D weiß jemand, warum ich diesen Fehler bekomme? Was ist hier falsch?
PS Übrigens ich sudo lief apt-get unixodbc-dev installieren, sudo apt-get libmyodbc und sudo apt-get install :-) libmysql-java installieren
UPDATE:
Ich habe auch die in einer der folgenden Antworten (von Benny Hill) vorgeschlagene Idee ausprobiert: die /etc/odbcinst.ini sowie /etc/odbc.ini zu verwenden. Funktioniert immer noch nicht und ich bekomme die gleiche Fehlermeldung.
$ 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
ZUSÄTZLICHE ANMERKUNG:
kann ich diese ODBC-Datenquelle verwenden, erfolgreich von der R Programmiersprache.
> library(odbc)
> con = odbcConnect("ProductionDb")
> con
RODBC Connection 1
Details:
case=nochange
DSN=ProductionDb
Gibt es einen Grund, warum Sie keinen MySQL JDBC-Treiber verwenden? – beny23
Hatten Sie die Möglichkeit, dies zu überprüfen, um festzustellen, ob Ihr JDBC/ODBC-Treiber versucht, die falsche .so-Datei zu verwenden? –
Noch nicht ..habe beschäftigt ..hang an :-) Ruhe und Prost! – MadSeb