2016-01-22 1 views
0

J'ai suivi les instructions pour installer ckan en tant que paquet sur Ubuntu 12.04 LTS. J'ai également configuré l'extension du magasin de données. Les bases de données ont été créées et les utilisateurs et mots de passe par défaut ont été configurés dans /etc/ckan/default/production.iniImpossible de télécharger vers le magasin de données dans ckan 2.5.1: utilisation de l'utilisateur postgres au lieu de celui configuré

Mon problème est que chaque fois que je veux télécharger un jeu de données vers le DataStore (en utilisant le bouton "Télécharger" à DataStore ") il semble d'abord que tout fonctionne bien. Mais si je clique un autre endroit et cliquez sur le DataStore à nouveau j'obtenir la boîte rouge d'erreur suivant:

Error: CKAN DataStore bad response. Status code: 409 Conflict. At: http://xubuntu12ltsckan/api/3/action/datastore_create . HTTP status code: 409 Response: {"help": " http://xubuntu12ltsckan/api/3/action/help_show?name=datastore_create ", "success": false, "error": {"fields": ["\"2016-01-07 14:35:12 ERROR : Error connecting to the server: FATAL: password... Requested URL: hhttp://xubuntu12ltsckan/api/3/action/datastore_create

(troisième url mutilée parce que je n'ai pas la réputation d'afficher plus de 2 URL)

le /var/log/apache2/datapusher.error.log répertorie ces lignes:

Fri Jan 22 13:38:24 2016] [error] /usr/lib/ckan/datapusher/lib/python2.7/site-packages/sqlalchemy/sql/sqltypes.py:185: SAWarning: Unicode type received non-unicode bind param value '42e50497-2231-4c86-b8db-d...'. (this warning may be suppressed after 10 occurrences) 
[Fri Jan 22 13:38:24 2016] [error] (util.ellipses_string(value),)) 
[Fri Jan 22 13:38:24 2016] [error] Fetching from: http://xubuntu12ltsckan/dataset/f4f9e859-fa6a-4257-8727-32358b448864/resource/d938a82f-95f7-4abd-b982-b32174dfa584/download/pgadmin.log 
[Fri Jan 22 13:38:24 2016] [error] Deleting "d938a82f-95f7-4abd-b982-b32174dfa584" from datastore. 
[Fri Jan 22 13:38:24 2016] [error] Determined headers and types: [{'type': u'text', 'id': u'2016-01-07 14:35:12 ERROR : Error connecting to the server: FATAL: password authentication failed for user "postgres"'}] 
[Fri Jan 22 13:38:24 2016] [error] Saving chunk 0 
[Fri Jan 22 13:38:24 2016] [error] Job "push_to_datastore (trigger: RunTriggerNow, run = True, next run at: None)" raised an exception 
[Fri Jan 22 13:38:24 2016] [error] Traceback (most recent call last): 
[Fri Jan 22 13:38:24 2016] [error] File "/usr/lib/ckan/datapusher/lib/python2.7/site-packages/apscheduler/scheduler.py", line 512, in _run_job 
[Fri Jan 22 13:38:24 2016] [error]  retval = job.func(*job.args, **job.kwargs) 
[Fri Jan 22 13:38:24 2016] [error] File "/usr/lib/ckan/datapusher/src/datapusher/datapusher/jobs.py", line 387, in push_to_datastore 
[Fri Jan 22 13:38:24 2016] [error]  records, api_key, ckan_url) 
[Fri Jan 22 13:38:24 2016] [error] File "/usr/lib/ckan/datapusher/src/datapusher/datapusher/jobs.py", line 203, in send_resource_to_datastore 
[Fri Jan 22 13:38:24 2016] [error]  check_response(r, url, 'CKAN DataStore') 
[Fri Jan 22 13:38:24 2016] [error] File "/usr/lib/ckan/datapusher/src/datapusher/datapusher/jobs.py", line 137, in check_response 
[Fri Jan 22 13:38:24 2016] [error]  request_url=request_url, response=response.text) 
[Fri Jan 22 13:38:24 2016] [error] HTTPError 

donc mon problème est que, pour une raison que je ne sais pas CKAN essaie de se connecter à la base de données postgres avec l'utilisateur postgres.

Mon production.ini ressemble plutôt à ceci:

## Database Settings 
sqlalchemy.url = postgresql://ckan_default:[email protected]/ckan_default 

ckan.datastore.write_url = postgresql://ckan_default:[email protected]/datastore_default 
ckan.datastore.read_url = postgresql://datastore_default:[email protected]/datastore_default 

Il n'y a pas de référence à l'utilisateur d'administration de base de données par défaut dans ce fichier. Le rôle "ckan_default" a les privilèges CREATE/TEMP/CONNECT et "datastore_default" a les privilèges CONNECT sur la base de données datastore_default.

Je ne vois aucune contrainte d'accès ici. Quelqu'un peut-il m'aider à résoudre ce problème?

Répondre

0

Je vérifierais que le fichier production.ini que vous regardez est celui que CKAN charge vraiment. Jetez un oeil à /etc/ckan/default/apache.wsgi et assurez-vous que vous avez:

config_filepath = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'production.ini')

Si l'hôte n'est pas dans un environnement de production, vous pouvez également définir debug = true dans le production.ini (ou development.ini), ce qui vous donne un débogage utile interface quand une erreur comme celle-ci se produit. Il vous permet d'examiner des variables à différents niveaux dans la pile. C'est très utile, mais n'activez pas le débogage sur une machine accessible au monde entier.