2010-12-02 15 views
8

Chaque fois que je tente d'exécuter une commande comme python manage.py syncdb, je reçois l'erreur suivante:Impossible de se connecter à la base de données Oracle avec Django sur Ubuntu

 
Traceback (most recent call last): 
    File "manage.py", line 11, in 
    execute_manager(settings) 
    File "/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/core/management/__init__.py", line 438, in execute_manager 
    utility.execute() 
    File "/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/core/management/__init__.py", line 379, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/core/management/__init__.py", line 261, in fetch_command 
    klass = load_command_class(app_name, subcommand) 
    File "/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/core/management/__init__.py", line 67, in load_command_class 
    module = import_module('%s.management.commands.%s' % (app_name, name)) 
    File "/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/utils/importlib.py", line 35, in import_module 
    __import__(name) 
    File "/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/south/management/commands/__init__.py", line 10, in 
    import django.template.loaders.app_directories 
    File "/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/template/loaders/app_directories.py", line 21, in 
    mod = import_module(app) 
    File "/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/utils/importlib.py", line 35, in import_module 
    __import__(name) 
    File "/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/contrib/admin/__init__.py", line 1, in 
    from django.contrib.admin.helpers import ACTION_CHECKBOX_NAME 
    File "/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/contrib/admin/helpers.py", line 1, in 
    from django import forms 
    File "/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/forms/__init__.py", line 17, in 
    from models import * 
    File "/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/forms/models.py", line 6, in 
    from django.db import connections 
    File "/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/db/__init__.py", line 77, in 
    connection = connections[DEFAULT_DB_ALIAS] 
    File "/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/db/utils.py", line 91, in __getitem__ 
    backend = load_backend(db['ENGINE']) 
    File "/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/db/utils.py", line 32, in load_backend 
    return import_module('.base', backend_name) 
    File "/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/utils/importlib.py", line 35, in import_module 
    __import__(name) 
    File "/home/damon/Workspace/django-projects/acm-cie/env/lib/python2.6/site-packages/django/db/backends/oracle/base.py", line 24, in 
    raise ImproperlyConfigured("Error loading cx_Oracle module: %s" % e) 
django.core.exceptions.ImproperlyConfigured: Error loading cx_Oracle module: libclntsh.so.11.1: cannot open shared object file: No such file or directory 

Est-ce résoluble sur Ubuntu?

+0

Est-ce que votre Ubuntu est une installation 64 bits? – Sathya

+0

Oui, je cours Ubuntu sur une machine 64 bits. – blackrobot

Répondre

-1

essayer easy_install cx_Oracle, il compilera module cx_Oracle de la source

0

Pour commencer - est-ce vraiment un problème Django, ou tout simplement un problème de cx_Oracle? Cx_Oracle est-il correctement installé? Pouvez-vous vous connecter à votre base de données Oracle dans une session shell Python?

import cx_Oracle 
conn = cx_Oracle.connect('/') # user/[email protected] 
cursor = conn.cursor() 

Si cela ne déclenche pas d'exception, vous vous êtes connecté avec succès.

5

Vous devez installer à la fois cx_Oracle et un client Oracle.

cx_Oracle peut être found here.

Un client Oracle approprié peut être found here.

Vous devrez également définir la variable LD_LIBRARY_PATH avant de démarrer votre application. Cela peut être fait (par exemple):

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

Maintenant, vous devriez être en mesure de passer le message d'erreur de cx_Oracle.