无法在 Ubuntu 上使用 Django 连接到 Oracle 数据库

Posted

技术标签:

【中文标题】无法在 Ubuntu 上使用 Django 连接到 Oracle 数据库【英文标题】:Cannot connect to Oracle database with Django on Ubuntu 【发布时间】:2011-05-19 06:43:58 【问题描述】:

每当我尝试运行类似python manage.py syncdb 的命令时,都会收到以下错误:

回溯(最近一次通话最后): 文件“manage.py”,第 11 行,在 执行管理器(设置) 文件“/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/core/management/__init__.py”,第 438 行,在 execute_manager 实用程序.execute() 文件“/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/core/management/__init__.py”,第379行,在执行 self.fetch_command(子命令).run_from_argv(self.argv) 文件“/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/core/management/__init__.py”,第 261 行,在 fetch_command klass = load_command_class(app_name, subcommand) 文件“/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/core/management/__init__.py”,第 67 行,在 load_command_class module = import_module('%s.management.commands.%s' % (app_name, name)) 文件“/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/utils/importlib.py”,第 35 行,在 import_module __import__(名称) 文件“/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/south/management/commands/__init__.py”,第 10 行,在 导入 django.template.loaders.app_directories 文件“/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/template/loaders/app_directories.py”,第 21 行,在 mod = import_module(应用程序) 文件“/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/utils/importlib.py”,第 35 行,在 import_module __import__(名称) 文件“/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/contrib/admin/__init__.py”,第 1 行,在 从 django.contrib.admin.helpers 导入 ACTION_CHECKBOX_NAME 文件“/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/contrib/admin/helpers.py”,第 1 行,在 从 django 导入表格 文件“/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/forms/__init__.py”,第 17 行,在 从模型导入 * 文件“/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/forms/models.py”,第 6 行,在 从 django.db 导入连接 文件“/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/db/__init__.py”,第 77 行,在 连接 = 连接[DEFAULT_DB_ALIAS] 文件“/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/db/utils.py”,第 91 行,在 __getitem__ 后端 = load_backend(db['ENGINE']) 文件“/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/db/utils.py”,第 32 行,在 load_backend return import_module('.base', backend_name) 文件“/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/utils/importlib.py”,第 35 行,在 import_module __import__(名称) 文件“/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/db/backends/oracle/base.py”,第 24 行,在 raise ImproperlyConfigured("加载 cx_Oracle 模块时出错:%s" % e) django.core.exceptions.ImproperlyConfigured:加载 cx_Oracle 模块时出错:libclntsh.so.11.1:无法打开共享对象文件:没有这样的文件或目录

这在 Ubuntu 上可以解决吗?

【问题讨论】:

你的 Ubuntu 是 64 位安装的吗? 是的,我在 64 位机器上运行 Ubuntu。 【参考方案1】:

您需要同时安装 cx_Oracle 和 Oracle 客户端。

cx_Oracle 可以是found here。

适当的 Oracle 客户端可以是 found here。

您还需要在启动应用程序之前设置 LD_LIBRARY_PATH 变量。这通常可以做到(例如):

export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib

现在您应该能够克服 cx_Oracle 错误消息了。

【讨论】:

【参考方案2】:

首先,这实际上是一个 Django 问题,还是只是一个 cx_Oracle 问题? cx_Oracle 是否安装正确?您可以在 Python shell 会话中连接到您的 Oracle 数据库吗?

import cx_Oracle
conn = cx_Oracle.connect('/') # user/password@dsn
cursor = conn.cursor()

如果这没有引发异常,则您已成功连接。

【讨论】:

【参考方案3】:

尝试easy_install cx_Oracle,它将从源代码编译cx_Oracle模块

【讨论】:

以上是关于无法在 Ubuntu 上使用 Django 连接到 Oracle 数据库的主要内容,如果未能解决你的问题,请参考以下文章

无法连接到lockdownd。在 Ubuntu 上退出

在 Ubuntu 20.04 上无法连接到 mongodb,连接被拒绝

Django 无法连接到 mongoDB 地图集

Nginx, django, gunicorn, ubuntu 14.04 (13: Permission denied) 同时连接到上游

无法通过套接字连接到 mysql 服务器 'var 在 Ubuntu (Emma) 上运行 mysqld mysqld.sock

运行docker django容器时无法连接到服务器