Oracle-Django中的Inspectdb获取OCI-22061:格式文本无效[T.

时间:2012-05-08 11:41:39

标签: django django-models oracle-xe cx-oracle inspectdb

我正在使用Oracle Database 10g xe universal Rel.10.2.0.1.0 against cx_Oracle-5.0.4-10g-unicode-py26-1.x86_64 on a django project on Ubuntu 10.04

我的数据库由Oracle 10gr2 enterprise edition生成(在Windows XP上,导入在US7ASCII character set and AL16UTF16 NCHAR character set完成,导入服务器使用AL32UTF8 character set,导出客户端使用EL8MSWIN1253 character set

当我尝试django-admin.py inspectdb时,我收到以下错误:

  

.......“indices = connection.introspection.get_indexes(cursor,   table_name)文件   “/usr/lib/pymodules/python2.6/django/db/backends/oracle/introspection.py”   第116行,在get_indexes中       for cursor.fetchall()中的行:文件“/usr/lib/pymodules/python2.6/django/db/backends/oracle/base.py”,行   483,在fetchall       for in self.cursor.fetchall()])cx_Oracle.DatabaseError:OCI-22061:格式文本无效[T“。

我知道"inspectdb works with PostgreSQL, MySQL and SQLite"但正如我从其他帖子中所理解的那样,它也可以以某种方式与Oracle合作。

有谁知道为什么我会收到此错误或我如何解决?

2 个答案:

答案 0 :(得分:0)

你可以尝试更新cx_Oracle 5.1.1包,然后试试这个:

python manage.py inspectdb --database dbname

答案 1 :(得分:0)

您可以下载cx_Oracle-5.1.2并使用以下命令解决问题。

$ wget -c http://prdownloads.sourceforge.net/cx-oracle/cx_Oracle-5.1.2-11g-py27-1.x86_64.rpm

安装rpm的命令

$ sudo yum install cx_Oracle-5.0.4-11g-unicode-py27-1.x86_64.rpm

同时下载Oracle instantclient http://download.oracle.com/otn/linux/instantclient/11101/basic-11.1.0.6.0-linux-x86_64.zip http://download.oracle.com/otn/linux/instantclient/11101/sdk-11.1.0.6.0-linux-x86_64.zip

提取以上下载的zip文件。 从 sdk-11.1.0.6.0-linux-x86_64 复制 include 文件夹并粘贴到 basic-11.1.0.6.0-linux-x86_64 .bashrc 文件

中设置以下路径

export $ LD_LIBRARY_PATH = $ LD_LIBRARY_PATH:/ oracle_lib / oracle_instantclient_11_1

export $ ORACLE_HOME = / oracle_lib / oracle_instantclient_11_1

$ ls / oracle_lib / oracle_instantclient_11_1

您应该找到包含文件列表的 include 文件夹

然后使用$ source~ / .bashrc 执行.bashrc文件

我已经测试过了。