Accès refusé
Bonjour,
Je suis en train de faire un test avec django sur notre base de données. Le but étant de créer une API pour voir la réactivité de celle-ci.
J'ai créé le projet sans problème, j'ai réussi à créer les 16 000 lignes de models avec inspect_db. Tout se passait bien jusqu'au moment où j'ai voulu testé mon projet, 'Accès refusé'.
De ce que j'ai pu voir, Il n'y aurait pas d'erreur de code, car les seules erreurs retournées sont les suivantes.
Je ne pense pas que ce soit un problème majeur, plutôt un manque de pratique sur votre système. Auriez-vous une idée à me soumettre?
Un grand merci par avance.
Bien à vous.
Laurent
PS D:\ProjetIris\TestDjango> python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
Exception in thread django-main-thread:
Traceback (most recent call last):
File "D:\ProjetIris\TestDjango\.venv\lib\site-packages\intersystems_iris\dbapi\_DBAPI.py", line 44, in connect
return native_connect(
File "D:\ProjetIris\TestDjango\.venv\lib\site-packages\intersystems_iris\_IRISNative.py", line 183, in connect
connection._connect(hostname, port, namespace, username, password, timeout, sharedmemory, logfile, sslcontext, autoCommit, isolationLevel, featureOptions, application_name)
File "D:\ProjetIris\TestDjango\.venv\lib\site-packages\intersystems_iris\_IRISConnection.py", line 304, in _connect
raise e
File "D:\ProjetIris\TestDjango\.venv\lib\site-packages\intersystems_iris\_IRISConnection.py", line 274, in _connect
raise Exception(self._in_message.wire._get())
Exception: Accès refusé
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\ProjetIris\TestDjango\.venv\lib\site-packages\django\db\backends\base\base.py", line 289, in ensure_connection
self.connect()
File "D:\ProjetIris\TestDjango\.venv\lib\site-packages\django\utils\asyncio.py", line 26, in inner
return func(*args, **kwargs)
File "D:\ProjetIris\TestDjango\.venv\lib\site-packages\django\db\backends\base\base.py", line 270, in connect
self.connection = self.get_new_connection(conn_params)
File "D:\ProjetIris\TestDjango\.venv\lib\site-packages\django\utils\asyncio.py", line 26, in inner
return func(*args, **kwargs)
File "D:\ProjetIris\TestDjango\.venv\lib\site-packages\django_iris\base.py", line 170, in get_new_connection
return Database.connect(**conn_params)
File "D:\ProjetIris\TestDjango\.venv\lib\site-packages\intersystems_iris\dbapi\_DBAPI.py", line 52, in connect
raise OperationalError(e)
intersystems_iris.dbapi._DBAPI.OperationalError: Accès refusé
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "c:\users\l.jouron\appdata\local\programs\python\python39\lib\threading.py", line 954, in _bootstrap_inner
self.run()
File "c:\users\l.jouron\appdata\local\programs\python\python39\lib\threading.py", line 892, in run
self._target(*self._args, **self._kwargs)
File "D:\ProjetIris\TestDjango\.venv\lib\site-packages\django\utils\autoreload.py", line 64, in wrapper
fn(*args, **kwargs)
File "D:\ProjetIris\TestDjango\.venv\lib\site-packages\django\core\management\commands\runserver.py", line 136, in inner_run
self.check_migrations()
File "D:\ProjetIris\TestDjango\.venv\lib\site-packages\django\core\management\base.py", line 574, in check_migrations
executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS])
File "D:\ProjetIris\TestDjango\.venv\lib\site-packages\django\db\migrations\executor.py", line 18, in __init__
self.loader = MigrationLoader(self.connection)
File "D:\ProjetIris\TestDjango\.venv\lib\site-packages\django\db\migrations\loader.py", line 58, in __init__
self.build_graph()
File "D:\ProjetIris\TestDjango\.venv\lib\site-packages\django\db\migrations\loader.py", line 235, in build_graph
self.applied_migrations = recorder.applied_migrations()
File "D:\ProjetIris\TestDjango\.venv\lib\site-packages\django\db\migrations\recorder.py", line 81, in applied_migrations
if self.has_table():
File "D:\ProjetIris\TestDjango\.venv\lib\site-packages\django\db\migrations\recorder.py", line 57, in has_table
with self.connection.cursor() as cursor:
File "D:\ProjetIris\TestDjango\.venv\lib\site-packages\django\utils\asyncio.py", line 26, in inner
return func(*args, **kwargs)
File "D:\ProjetIris\TestDjango\.venv\lib\site-packages\django\db\backends\base\base.py", line 330, in cursor
return self._cursor()
File "D:\ProjetIris\TestDjango\.venv\lib\site-packages\django\db\backends\base\base.py", line 306, in _cursor
self.ensure_connection()
File "D:\ProjetIris\TestDjango\.venv\lib\site-packages\django\utils\asyncio.py", line 26, in inner
return func(*args, **kwargs)
File "D:\ProjetIris\TestDjango\.venv\lib\site-packages\django\db\backends\base\base.py", line 289, in ensure_connection
self.connect()
File "D:\ProjetIris\TestDjango\.venv\lib\site-packages\django\db\utils.py", line 91, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "D:\ProjetIris\TestDjango\.venv\lib\site-packages\django\db\backends\base\base.py", line 289, in ensure_connection
self.connect()
File "D:\ProjetIris\TestDjango\.venv\lib\site-packages\django\utils\asyncio.py", line 26, in inner
return func(*args, **kwargs)
File "D:\ProjetIris\TestDjango\.venv\lib\site-packages\django\db\backends\base\base.py", line 270, in connect
self.connection = self.get_new_connection(conn_params)
File "D:\ProjetIris\TestDjango\.venv\lib\site-packages\django\utils\asyncio.py", line 26, in inner
return func(*args, **kwargs)
File "D:\ProjetIris\TestDjango\.venv\lib\site-packages\django_iris\base.py", line 170, in get_new_connection
return Database.connect(**conn_params)
File "D:\ProjetIris\TestDjango\.venv\lib\site-packages\intersystems_iris\dbapi\_DBAPI.py", line 52, in connect
raise OperationalError(e)
django.db.utils.OperationalError: Accès refusé
C'est bizarre, si l'inspect fonctionne, le runserver doit aussi fonctionner.
Tu peux visualiser les log d'audit pour avoir plus de détail sur l'erreur de connexion :
Dans cet exemple, j'ai essayé de me connecter avec un user grongier en lieu et place de SuperUser, la faute à :
"USER": os.environ.get("USER", "SuperUser"),
dans mon settings.py
Merci pour ta réponse Guillaume.
J'ai enfin réussi à me connecté. Peut-être une erreur de configuration ou l'utilisation d'un mauvais environnement virtuel, dans tous les cas tout vas bien, c'est l'essentiel.
Nous sommes en train de faire des tests pour savoir dans quel direction partir dans le projet final. Je fais actuellement un poc avec python/django/DRF. Ce "petit" projet est créé est en parallèle de la base de données.
Une autre erreur qui est apparue. J'ai suivi les recommandations que tu nous as données lors de notre réunion pour créer l'API. Voici le retour.
django.db.utils.OperationalError: [SQLCODE: <-1>:<Instruction SQL non valide >]
[Location: <Prepare>]
[%msg: < IDENTIFICATEUR attendu, : trouvé" ^SELECT COUNT ( * ) AS "__count" FROM :%qpar>]
Y aurait-il une erreur de path ou metaclass du models?
Je tâtonne sans succès pour le moment. Aurais-tu une idée ou un indice?
Merci par avance
Bonjour,
J'aurai besoin d'un example de model où l'erreur arrive.
De plus, peux tu essayer de mettre à jour le driver db-api d'iris, nous avons récemment corrigé des problèmes par rapport aux TINYINT et aux streams.
Sinon, tu peux toujours soumettre un bug sur l’interpréteur django pour iris ici:
https://github.com/caretdev/django-iris