unixODBC错误“/usr/lib/libtdsodbc.so.0:错误的ELF类:ELFCLASS32”

时间:2010-11-15 00:04:27

标签: php centos freetds unixodbc

我正在开发一个网站,我需要通过PHP将数据从远程MS SQL Server数据库导入Unix服务器上的MySQL数据库。感谢this post的答案,我能够在我的开发环境中启动并运行一切(Mac OS X 10.6)。但是,现在,我正在尝试设置我的服务器环境,即CentOS 5.4。我安装并配置了unixODBC和FreeTDS,但是当我尝试连接时,出现以下错误:

Connection Failed:[unixODBC][Driver Manager]Can't open lib '/usr/lib/libtdsodbc.so.0' : /usr/lib/libtdsodbc.so.0: wrong ELF class: ELFCLASS32

从我在互联网上找到的内容来看,似乎我安装了32位unixODBC(或FreeTDS,我不确定)(libtdsodbc.so.0符号链接到libtdsodbc.so.0.0。 0)它需要是64位。那是对的吗?如果是这样,我该如何升级到64位版本?我是开发人员,而不是服务器大师,所以这有点超出了我的服务器知识。

感谢。

3 个答案:

答案 0 :(得分:4)

将odbcinst.ini中的引用从/usr/lib/libtdsodbc.so.0更改为/usr/lib64/libtdsodbc.so.0,为我们修复了与您描述的配置相同的错误。

答案 1 :(得分:1)

您的诊断是正确的。但是,无需升级,因为两者可以并行安装。

yum install freetds.x86_64

答案 2 :(得分:0)

此修复程序对我不起作用。我也安装了freetds.x86_64(它让我安装但报告了冲突)并且路径./usr/lib/libtdsodbc.so.0是正确的。无论如何都要创建一个符号链接,以防内部人员寻找它。

ln -s /usr/lib/libtdsodbc.so.0 /usr/lib64/libtdsodbc.so.0

我最初关注instructions at MediaTemple,但已经看过64位Cent OS的其他文章。如果我发现任何对我有用的事情,我会报告。

确实,删除FreeTDS,重新启动Apache,安装上面提到的64位软件包并更新odbcinst.ini路径,我能够克服上述错误,实际上,删除了错误。

我现在已成功与MS SQL服务器“交谈”,尽管它现在给我一般错误。 叹息。无论如何,大部分路都在那里。希望这有助于某人。