【问题标题】:unixODBC error "/usr/lib/libtdsodbc.so.0: wrong ELF class: ELFCLASS32"unixODBC 错误“/usr/lib/libtdsodbc.so.0:错误的 ELF 类:ELFCLASS32”
【发布时间】:2011-05-09 23:48:32
【问题描述】:

我正在一个网站上工作,我需要通过 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 位版本?我是开发人员,而不是服务器专家,所以这有点超出我的服务器知识范围。

谢谢。

【问题讨论】:

    标签: php centos freetds unixodbc


    【解决方案1】:

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

    yum install freetds.x86_64
    

    【讨论】:

    • 当我运行上面的命令时,我收到以下消息:“Package freetds-0.64-11.el5.centos.x86_64 already installed and latest version Nothing to do。”我还有什么需要做的吗?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      此修复对我不起作用。我也安装了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 服务器“对话”,尽管它现在给了我一般错误。 叹息。无论如何,大部分时间都在那里。希望这对某人有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-04
        • 1970-01-01
        • 2022-08-17
        • 2013-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-20
        相关资源
        最近更新 更多