Setting up Django with Apache got DB error - DatabaseError: DPI-1047

Setting up Django with Apache got DB error - DatabaseError: DPI-1047

我正在 Apache 2.4、Suse 11 中设置 Django。

Apache 启动没有问题。如果我不在 Setting.py 中放置任何数据库连接信息,则可以毫无问题地打开索引页面。当我放入数据库信息,然后尝试访问索引页面时,我在 Apache 错误输出中看到以下数据库错误。

但是,如果我只是运行'python',那么'import cx_Oracle as Database',就没有错误。

我也把'PassEnv LD_LIBRARY_PATH'和'PassEnv PATH'放在了httpd.conf.

Oracle 环境变量是:

    export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib:$LD_LIBRARY_PATH
    export PATH=/usr/lib/oracle/11.2/client64:$PATH

Django 版本 1.10

Python 版本 2.7.13 64 位

cx_Oracle 6.0

如果我提供的任何更详细的信息对您有帮助,请告诉我。非常感谢!

    import cx_Oracle as Database
    DatabaseError: DPI-1047: Oracle Client library cannot be loaded:
    libclntsh.so: cannot open shared object file: No such file or directory.

将 cx_Oracle 6.0 替换为 cx_Oracle 5.3 后错误消失了......

仍然不确定根本原因,我想这与 cx_Oracle 6.0 可能与 python 2.7 不兼容有关?

如果您的计算机上只有一组 Oracle 库,只需使用 ldconfig 并忘记尝试通过 Apache 传递 LD_LIBRARY_PATH。我总是发现这在 Apache 中是一个巨大的痛苦,因为版本不同(有些你使用导出,有些则不),有时你可以在 httpd.conf 中设置值,其他时候最好将它们放在 /etc/sysconfig/httpd 中。这完全取决于平台和版本。

您可以使用类似的东西:

sudo sh -c "echo /usr/lib/oracle/11.2/client64/lib > /etc/ld.so.conf.d/oracle-instantclient.conf"
sudo ldconfig