Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ruby php7 et MongoDB

3 réponses
Avatar
Une Bévue
Bonjour,

sur "Linux Mint 18 Sarah" fondée sur Ubuntu 16.04 LTS, j'ai installé
Ruby, Php7 et MongoDB ***32bits*** (sur un "vieux" dell D620).

surprise avec MongoDB, si je crée une base de données disons "toast"
avec une seule collection "students" avec php, je peux bien évidemment
la lire depuis php MAIS PAS depuis Ruby.

du coup je crée une autre base de données "test" avec une seule
collection "student", je peux la lire à partir de Ruby mais pas à partir
de php.

pour l'instant mes bases ne sont pas authentifiées.

Or j'ai besoin de pouvoir lire mes bases crées à partir de Ruby depuis
php car j'utilise Rockmongo (sorte de phpMyAdmin pour MongoDB) écrit en php.

j'ai vérifié par "ps aux | grep mongod" je n'ai bien qu'un seul serveur
MongoDB qui tourne.

Au cas où vous auriez des lumières.

3 réponses

Avatar
Yliur
Le Sat, 19 Nov 2016 14:22:47 +0100
Une Bévue a écrit :
Bonjour,
sur "Linux Mint 18 Sarah" fondée sur Ubuntu 16.04 LTS, j'ai installé
Ruby, Php7 et MongoDB ***32bits*** (sur un "vieux" dell D620).
surprise avec MongoDB, si je crée une base de données disons "toast"
avec une seule collection "students" avec php, je peux bien
évidemment la lire depuis php MAIS PAS depuis Ruby.
du coup je crée une autre base de données "test" avec une seule
collection "student", je peux la lire à partir de Ruby mais pas à
partir de php.
pour l'instant mes bases ne sont pas authentifiées.
Or j'ai besoin de pouvoir lire mes bases crées à partir de Ruby
depuis php car j'utilise Rockmongo (sorte de phpMyAdmin pour MongoDB)
écrit en php.
j'ai vérifié par "ps aux | grep mongod" je n'ai bien qu'un seul
serveur MongoDB qui tourne.
Au cas où vous auriez des lumières.

Une erreur de configuration ? Dans ce message tu as écrit une fois
"students" et une fois "student", est-ce que tu as pu te tromper en
écrivant ça quelque part ?
Sinon l'accès se passe en deux étapes sans doute : connexion puis
requête. Quelle étape ne fonctionne pas ? Y a-t-il un message d'erreur
lors de la connexion ?
Ou encore un moyen dans MongoDb de lister les collections d'une base ?
Avatar
Une Bévue
Le 19/11/2016 à 14:38, Yliur a écrit :
Une erreur de configuration ? Dans ce message tu as écrit une fois
"students" et une fois "student", est-ce que tu as pu te tromper en
écrivant ça quelque part ?

non, non, il y a bien une différence entre "students" et "student" dans
l'une ou l'autre db.
Sinon l'accès se passe en deux étapes sans doute : connexion puis
requête. Quelle étape ne fonctionne pas ? Y a-t-il un message d'erreur
lors de la connexion ?

aucun message d'erreur.
Ou encore un moyen dans MongoDb de lister les collections d'une base ?

oui, je viens de regarder, après mon post sur usenet.
avec "mongo" le "shell" de MongoDB j'obtiens :
use toast

switched to db toast
show collections

students
system.indexes
db.students.find();

{ "_id" : ObjectId("582ed4dfa7aca50ea701b15a"), "name" : "Yvon Thoraval" }
{ "_id" : ObjectId("582ed4dfa7aca50ea701b15b"), "name" : "Samuël Thoraval" }
{ "_id" : ObjectId("582ed4dfa7aca50ea701b15c"), "name" : "Lilwenn
Thoraval" }
donc là, ça roule, j'ai bien le contenu de ma bd créée par
use test

switched to db test
show collections

student
system.indexes
db.student.find()

là rien ne sort et pourtant, ruby, me donne une collection de 3 documents.
donc, si je résume les manips, php et le "shell mongo" finalement
trouvent la même chose : il y a une collection de 3 documents dans la bd
"toast", il y a bien une autre bd "test" avec une collection "student"
mais vide.
Ruby trouve toutes les dbs existantes :
databases = ["local", "admin", "toast", "test", "db"]
MAIS toutes ces dbs ont la même collection "student".
Ruby affiche le bon contenu de la collection "student" de "test" (c'est
différent de toast.students, un attribut supplémentaire : "course")
MAIS si je print la collection "student" attribuée aussi à "test" par
Ruby, j'ai la même chose que pour toast/student...
je m'arrache les cheveux.
bon, comme je suis en 32 bits, ma version de MongoDB est la 2.6.10.
sur le site MongoDB il est indiqué que le 32 bits n'est plus supporté...
peut-être qu'il y a une sorte de mismatch entre version du driver et
version du serveur.
avec php7 je suis au "tip-top" du driver "MongoDB" + adaptateur composer
mongodb/mongodb.
à la précédente release de linux mint, je n'ai pas eu ce bronx.
Avatar
Une Bévue
Le 19/11/2016 à 14:38, Yliur a écrit :
Une erreur de configuration ? Dans ce message tu as écrit une fois
"students" et une fois "student", est-ce que tu as pu te tromper en
écrivant ça quelque part ?

une erreur perso au choix de la base.
j'ai utilisé la syntaxe JavaScript dans un script Ruby...
mais je n'avaais pas de mesage d'erreur.
le driver ruby pour mongo est tel qu'il utilise la base "admin" par défaut.
c'est là où j'ai trouvé mes collections.