openMairie.org | Démonstration | Documentation | Forum

Erreur de base de donnees. Contactez votre administrateur

Bonjour,

J’ai installé opencourrier 4.1.1. Le logiciel correspond tout à fait aux besoins d’une petite administration belge. Tout a l’air de fonctionner sauf les recherches dans les courriers entrants et dans les courriers sortants.

Voici le message d’erreur obtenu :

Erreur de base de donnees. Contactez votre administrateur

Voici les détails :

/opencourrier-4.1.1/scr/tab.php?validation=0&obj=courrier_arrivee&premier=0&recherche=&selectioncol=&tricol=&advs_id=&valide=&style=tab&onglet=&
0.000 : class utils - __construct() VERBOSE
1.079 : class utils - retrieveUserProfile(): db->query(" SELECT * FROM opencourrier.om_utilisateur left join opencourrier.om_collectivite on om_collectivite.om_collectivite = om_utilisateur.om_collectivite left join opencourrier.om_profil on om_utilisateur.om_profil = om_profil.om_profil WHERE om_utilisateur.login = ‘SR_PRIVE’;"); VERBOSE
1.080 : class utils - getAllRights(): db->query("select om_droit.om_droit as table_om_droit_field_id, om_profil.om_profil as table_om_profil_field_id, om_droit.libelle as table_om_droit_field_libelle, om_profil.libelle as table_om_profil_field_libelle, om_profil.hierarchie as table_om_profil_field_hierarchie from opencourrier.om_droit left join opencourrier.om_profil on om_droit.om_profil=om_profil.om_profil "); VERBOSE
1.082 : class utils - getCollectivite(): db->query(“select * from opencourrier.om_parametre where om_collectivite=1”); VERBOSE
1.084 : class utils - get_service_code() : db->getOne(“SELECT code FROM opencourrier.service WHERE service = 20”) VERBOSE
1.086 : class utils - get_service_code() : db->getOne(“SELECT code FROM opencourrier.service WHERE service = 20”) VERBOSE
1.087 : class utils - get_service_code() : db->getOne(“SELECT code FROM opencourrier.service WHERE service = 20”) VERBOSE
1.091 : class om_table - __construct() VERBOSE
1.091 : class om_table - display(): db->getone(“select count(*) from opencourrier.courrier LEFT JOIN opencourrier.categorie_courrier ON courrier.categorie_courrier=categorie_courrier.categorie_courrier LEFT JOIN opencourrier.civilite ON courrier.civilite=civilite.civilite LEFT JOIN opencourrier.emetteur ON courrier.emetteur=emetteur.emetteur LEFT JOIN opencourrier.service ON courrier.traitement=service.service LEFT JOIN opencourrier.type_correspondant ON courrier.type_correspondant=type_correspondant.type_correspondant WHERE traitement=‘20’ AND typecourrier=‘arrivee’ and ( lower(translate(objetcourrier::varchar,‘���������������������������������������������������’,‘aaaaaceeeeiiiinooooouuuuyyaaaaaceeeeiiiinooooouuuuy’)) like ‘%ligne%’ )”); VERBOSE
1.093 : class om_table - display(): db->limitquery(“SELECT courrier.courrier as “courrier”,registre as “registre”,nature as “nature”,to_char(datearrivee ,‘DD/MM/YYYY’) as “date d’arrivee”,to_char(datecourrier ,‘DD/MM/YYYY’) as “date courrier”,courrier.emetteurnom || CASE WHEN courrier.emetteurprenom IS NULL THEN ‘’ ELSE ’ ’ END || COALESCE(courrier.emetteurprenom, ‘’) as “emetteur”,servicelib as “traitement”,categorie_courrier.libelle as “categorie”,substring(objetcourrier, 1,20) as “objet courrier”,nbtache as “Tache(s)” FROM opencourrier.courrier LEFT JOIN opencourrier.categorie_courrier ON courrier.categorie_courrier=categorie_courrier.categorie_courrier LEFT JOIN opencourrier.civilite ON courrier.civilite=civilite.civilite LEFT JOIN opencourrier.emetteur ON courrier.emetteur=emetteur.emetteur LEFT JOIN opencourrier.service ON courrier.traitement=service.service LEFT JOIN opencourrier.type_correspondant ON courrier.type_correspondant=type_correspondant.type_correspondant WHERE traitement=‘20’ AND typecourrier=‘arrivee’ and ( lower(translate(objetcourrier::varchar,‘���������������������������������������������������’,‘aaaaaceeeeiiiinooooouuuuyyaaaaaceeeeiiiinooooouuuuy’)) like ‘%ligne%’ ) ORDER BY courrier.courrier DESC”, 0, 15); VERBOSE
class om_table - database::isError(): QUERY => SELECT courrier.courrier as “courrier”,registre as “registre”,nature as “nature”,to_char(datearrivee ,‘DD/MM/YYYY’) as “date d’arrivee”,to_char(datecourrier ,‘DD/MM/YYYY’) as “date courrier”,courrier.emetteurnom || CASE WHEN courrier.emetteurprenom IS NULL THEN ‘’ ELSE ’ ’ END || COALESCE(courrier.emetteurprenom, ‘’) as “emetteur”,servicelib as “traitement”,categorie_courrier.libelle as “categorie”,substring(objetcourrier, 1,20) as “objet courrier”,nbtache as “Tache(s)” FROM opencourrier.courrier LEFT JOIN opencourrier.categorie_courrier ON courrier.categorie_courrier=categorie_courrier.categorie_courrier LEFT JOIN opencourrier.civilite ON courrier.civilite=civilite.civilite LEFT JOIN opencourrier.emetteur ON courrier.emetteur=emetteur.emetteur LEFT JOIN opencourrier.service ON courrier.traitement=service.service LEFT JOIN opencourrier.type_correspondant ON courrier.type_correspondant=type_correspondant.type_correspondant WHERE traitement=‘20’ AND typecourrier=‘arrivee’ and ( lower(translate(objetcourrier::varchar,‘���������������������������������������������������’,‘aaaaaceeeeiiiinooooouuuuyyaaaaaceeeeiiiinooooouuuuy’)) like ‘%ligne%’ ) ORDER BY courrier.courrier DESC LIMIT 15 OFFSET 0 DEBUG
class om_table - database::isError(): SGBD ERROR => nativecode=ERREUR: séquence d’octets invalide pour l’encodage « UTF8 » : 0xe0 0xe1 0xe2 DEBUG
class om_table - database::isError(): PEAR ERROR => DB Error: unknown error DEBUG
1.093 : class utils - __destruct() VERBOSE

Si je teste les requêtes une à une dans phppgadmin (sous windows), elles fonctionnent. La base de données est en UTF8.
Je ne sais pas où chercher. J’ai regardé sur les forums et aucune info à ce sujet.

J’ai voulu m’inscrire sur le forum qui se trouve sur adullact.net mais je ne reçois pas de mail de confirmation.

Bref, si vous pouviez me donner une piste de résolution du problème, cela m’aiderait beaucoup. Merci.

Bonjour,
Votre base opencourrier est installée sur quel type de serveur ?
Cordialement,
Ludovic

Bonjour Ludovic,

Il est installé sur une machine windows sur laquelle j’ai installé
bitnami wapp stack (apache, postgresql et phppgadmin). J’ai remarqué
c’est au niveau de toutes les recherches que le problème se présente.

Cordialement,

Gisèle

Bonjour Gisèle,

Dans votre php.ini il faut peut-être activer zend.multibyte :
zend.multibyte = On

Cordialement,
Ludovic

Ludovic,

Merci mais malheureusement, ça ne fonctionne pas. J’ai toujours le même
message d’erreur après modification du php.ini et redémarrage des
services apache et postgres.

Cordialement,
Gisèle

Bonjour Gisèle,

Il semble que vous ayez un problème d’encodage au niveau d’un des éléments servant à faire fonctionner l’application.

Cordialement,

Thierry

Bonjour Thierry,

Je suis en train de chercher de ce côté. J’ai forcé l’encodage UTF-8 au
niveau du httpd.conf d’Apache. J’ai fait la même chose au niveau du
php.ini. Au niveau de postgres, le codage est en UTF8. Le tri est
French-Belgium.1252 et le type de caractère est aussi
French-Belgium.1252. Je me dis que cela vient peut-être de là mais cela
se crée automatiquement ainsi quand je crée mon schéma et ma base de
données via phpPgAdmin et je ne vois pas la possibilité de le modifier
après.
J’ai fait une réinstall complète ce matin et le problème est toujours le
même dans toutes les recherches.

J’envisage d’installer une linux debian histoire d’éviter des problèmes
éventuels avec windows. Comme je ne suis pas experte en linux, je
risque de galérer un peu … beaucoup ?

Merci pour votre aide.

Cordialement,

Gisèle

Bonjour Gisèle,

Dernière petite chose sur Windows : Y a-t-il bien une ligne extension php_mbstring.dll dans le php.ini ?

Sinon oui sur une debian ça fonctionne très bien, je prépare un petit complément d’information pour l’installation …

Cordialement,
Ludovic

Bonjour Ludovic,

Oui, l’extension est bien là et elle est active.
J’ai commencé mon install sous debian mais ce n’est pas évident …
C’est super si tu peux me donner quelques infos pour l’installation.

Cordialement,
Gisèle

Gisèle,

Pour l’installation du poste de travail sous linux debian il faut se référer à la documentation du framework openmairie. C’est assez complet.

Cordialement,

Thierry

Voilà une petite mise à jour pour la doc d’installation sur debian 8 avec postgresql 9.6 et PHP 7 :

Installation d’openCourrier

Mettre à jour vos paquets

$ apt-get update
$ apt-get upgrade

Installation d’apache2

$ apt-get install apache2

Ajout du dépot Dotdeb

$ echo “deb http://packages.dotdeb.org jessie all” > /etc/apt/sources.list.d/dotdeb.list
$ wget -O- https://www.dotdeb.org/dotdeb.gpg | apt-key add -
$ apt update

Installation de PHP 7

$ sudo apt install php7.0 libapache2-mod-php7.0 php7.0-mysql php7.0-curl php7.0-json php7.0-gd php7.0-mcrypt php7.0-msgpack php7.0-memcached php7.0-intl php7.0-sqlite3 php7.0-gmp php7.0-geoip php7.0-mbstring php7.0-xml php7.0-zip php7.0-pgsql

Installation de Postgresql

$ wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -
$ sudo sh -c ‘echo “deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main” >> /etc/apt/sources.list.d/pgdg.list’
$ sudo apt-get install postgresql postgresql-contrib

Installation de Subversion

$ aptitude install subversion

Modification du php.ini

$ cd /etc/php/7.0/apache2
$ sudo nano php.ini
$ Passer zend.multibyte de Off à On
;zend.multibyte = On

Installation d’opencourrier

$ cd /var/www/html
$ svn checkout svn://scm.adullact.net/svn/opencourrier/trunk opencourrier
$ cd opencourrier/data/pgsql
$ sudo createdb opencourrier
$ sudo psql opencourrier <install.sql
$ sudo chown -R www-data:www-data /var/www/html/opencourrier
$ sudo chmod -R 777 /var/www/html/opencourrier

Prévenez moi si ce n’est pas complet, merci

Ludovic

Merci Thierry. Je regarderai cela dès demain matin. Plus le courage
maintenant.

Cordialement,

Gisèle

Ludovic,

Merci. Super pour la doc. Je testerai cela dès demain matin. J’ai
cherché cette info pour la version Jessie et je n’ai pas trouvé tout.
Je vous tiendrai au courant.

Bonne soirée et encore merci.

Gisèle

Bonjour Ludovic,

Merci pour les explications. J’ai pu installer le tout mais quand
j’essaie de me connecter avec admin - admin, rien ne se passe.

J’ai activé le mode debug et on dirait qu’il y a un problème de
connexion à la base de données car j’obtiens ceci :
Logger
/opencourrier/scr/login.php
0.000 : class utils - application::__construct() VERBOSE
0.001 : class utils - application::login(): start EXTRA_VERBOSE
0.057 : class utils - application::connectDatabase(): Tentative de
connexion au SGBD EXTRA_VERBOSE
0.057 : class utils - application::getMenuToDisplay(): start EXTRA_VERBOSE
0.057 : class utils - application::getMenuToDisplay(): end EXTRA_VERBOSE
0.057 : class utils - application::disconnectDatabase(): Aucune base de
donnees a deconnecter EXTRA_VERBOSE
0.057 : class utils - application::__destruct() VERBOSE

J’ai pourtant modifié le database.inc.php en indiquant public pour le
nom du schéma.

Qu’est-ce que je peux vérifier d’autre ?

Gisèle

Bonjour Gisèle,
Pour le schéma il faut mettre opencourrier, normalement il n’y a rien à modifier dans le fichier database.inc.php
Ludovic

Ludovic,

Alors, c’est peut-être parce que j’ai créé la base avec un autre
utilisateur que postgres. Si je ne modifie pas du tout le
database.inc.php, je n’obtiens rien du tout. Par contre, si je mets le
login et le mot de passe de l’utilisateur qui a créé la base de données,
j’obtiens ceci :
.041 : class utils - application::connectDatabase(): Tentative de
connexion au SGBD EXTRA_VERBOSE
0.041 : class utils - application::connectDatabase(): Connexion [pgsql]
‘opencourrier’ OK EXTRA_VERBOSE
0.041 : class utils - application::login(): credentials “admin”/"***“
EXTRA_VERBOSE
0.044 : class utils - application::retrieveUserAuthenticationMode():
db->query(” SELECT * FROM opencourrier.om_utilisateur WHERE
login=‘admin’ "); VERBOSE
0.044 : class utils - application::processAuthentication(): le mode
d’authentification est “” EXTRA_VERBOSE
0.044 : class utils - application::login(): end EXTRA_VERBOSE
0.044 : class utils - application::getMenuToDisplay(): start EXTRA_VERBOSE
0.044 : class utils - application::getMenuToDisplay(): end EXTRA_VERBOSE
0.044 : class utils - application::getMenuToDisplay(): start EXTRA_VERBOSE
0.044 : class utils - application::getMenuToDisplay(): end EXTRA_VERBOSE
0.044 : class utils - application::disconnectDatabase(): Deconnexion OK
EXTRA_VERBOSE
0.044 : class utils - application::__destruct()

=> là, je vois que la connexion à la base se fait mais ça ne va pas plus
loin. Je me dit que c’est peut-être un problèmes de droits ou alors il
manque des infos dans les tables. Je vais chercher dans ce sens.

Merci pour ton aide qui est bien précieuse.

Cordialement,

Gisèle

Gisèle,

Il faut peut-être essayer de réinstaller la base à partir de l’utilisateur postgres
1
$ DROP DATABASE opencourrier

2
$ su postgres

3
$ passwd postgres

4
Mettre postgres comme mot de passe ?

5
Reprendre l’installation
$ sudo createdb opencourrier
$ sudo psql opencourrier <install.sql
$ sudo chown -R www-data:www-data /var/www/html/opencourrier
$ sudo chmod -R 777 /var/www/html/opencourrier

J’espère que je n’ai plus rien oublié …

Ludovic

Bonjour Ludovic,

J’avance. J’ai pu faire une install partielle avec encore quelques
petits doux messages d’erreurs.

En fait, il faut lancer install.sql depuis le répertoire data/pgsql.
Comme cela ne fonctionnait pas, j’ai lancé les init un à un.
Il y a eu quelques messages d’erreurs qui, je pense, sont provoqués par
l’absence de postgis. Est-ce possible ? Si oui, comment est-ce que je
peux l’activer ?

J’ai quand-même pu réussir à me connecter en admin mais il y a encore
quelques petits problèmes. J’y vais vraiment step by step et j’espère
arriver au bout :slight_smile:

Cordialement,

Gisèle

Bonjour Ludovic,

Pour info, j’ai pu installer le tout sans message d’erreur en installant postgis (apt-get install postgis) et en tapant la commande create extension postgis.
J’ai préféré créer un nouvel utilisateur pour la gestion de la base de données => ce n’est pas postgres qui en est propriétaire => je suis allée modifier les infos dans database.inc.php (login et mot de passe + schéma qui est public par défaut).
D’ici quelques jours, j’essaierai de refaire une install de A à Z et de créer un petit tuto histoire d’aider ceux qui ne s’en sortiraient pas.
En tout cas, encore un gros merci. Sans ton tuto, je pense que je n’y serais arrivée :wink:

Cordialement,
Gisèle

Bonjour Gisèle,

Voilà ce que j’avais oublié, l’installation de postgis, à noter que pour pouvoir s’en servir il faut installer qgis : https://www.qgis.org/fr/site/forusers/alldownloads.html#debian-ubuntu
Très bien en tout cas !
Cordialement,
Ludovic