【问题标题】:Python's Django could not connect to Oracle 11gPython 的 Django 无法连接到 Oracle 11g
【发布时间】:2012-04-18 07:35:45
【问题描述】:

我是 Python 新手,正在尝试使用 Django 快速构建网站。

以下是我执行的步骤(Win 7):

  • 已安装 Python 2.7
  • 已安装 Django 1.4
  • 创建了一个项目和应用程序
  • 使用“python manage.py startserver”启动服务器并使用基本页面“http://127.0.0.1:8000”访问。
  • 现在想为我的项目配置我的 Oracle 11g 数据库。因此,安装了 cx_Oracle 5.1-11g 并尝试了 'python manage.py syncdb',但失败并出现 cx_Oracle.DatabaseError: ORA-24315: 非法属性类型
  • 即使是从 python 解释器也得到了同样的错误。

    import cx_Oracle
     connection=cx_Oracle.Connection('python_user','python_user','(DESC..string..)')
    

    Traceback (most recent call last):
       File "<stdin>", line 1, in <module>
    cx_Oracle.DatabaseError: ORA-24315: illegal attribute type
  • 根据我的故障排除,我正在使用正确的凭据和库。

任何帮助表示赞赏..

【问题讨论】:

    标签: django oracle11g database-connection python-2.7


    【解决方案1】:

    通过引发显式异常来检查 哪个 属性失败可能会帮助您朝着正确的方向前进

    try:
        connection=cx_Oracle.Connection('python_user','python_user','(DESC..string..)')
    except cx_Oracle.DatabaseError, e:
        print e[0].context
        raise
    

    【讨论】:

    • 'ERROR: Connection_Connect(): set driver name' 是上下文。
    • 我认为这是 cx_Oracle 构建的问题。您确定它是针对 Oracle 11g 客户端编译的吗?这里有一个类似的问题:google.nl/…
    • quote: '这不是我关心的 Oracle 客户端。这是您使用的 cx_Oracle 版本!您需要确保您使用的 cx_Oracle 版本是针对 Oracle 10g 编译的,并且它似乎是使用 Oracle 11g 客户端编译的。在我的情况下,如何确保这是针对 11g 编译的?我从cx-oracle.sourceforge.net 获得了 msi 文件
    • 我想我找到了问题!我的系统安装了 10.2 版本的 Oracle Xe。可能就是这个问题。我将安装一个 11g 版本,更新 PATH envi' 变量并检查。
    • 我认为这解决了问题。但是对于 11g 版本,我得到了这个错误。 'cx_Oracle.InterfaceError: 无法获取 Oracle 环境句柄'。对此感到生气...:-x
    【解决方案2】:

    主要问题是以下版本应该相互兼容。

    Python 2.7Django 1.4Oracle DB 11g (which I connect to) 和 lib cx_Oracle 5.0.3+-11g 应该与 Oracle Xe 11.2(之前是 10.2)兼容。

    安装正确的版本并将 ORACLE_HOME 设置为“C:/oraclexe/.../11.2.0/server”后,它开始连接,没有任何问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-21
      • 2015-02-15
      • 1970-01-01
      • 2015-03-12
      • 1970-01-01
      • 2013-07-17
      • 1970-01-01
      • 2013-11-05
      相关资源
      最近更新 更多