无法在 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容器时无法连接到服务器