Association Bordelaise des Utilisateurs de Logiciels libres

Accueil ›› Utilisation de logiciels libres ›› Logiciels grand public ›› OpenOffice + MySQL / Debian Woody

OpenOffice + MySQL / Debian Woody

Posté le mardi 4 janvier 2005 par MIB

Depuis longtemps j’avais entendu dire qu’on pouvait accèder à une base de données depuis OpenOffice, mais je n’étais jamais arrivé à le faire sur mes postes de travail (distribution Debian Woody). Malchance, maladresse, mauvais karma ?

Finalement non. En fait, ça vient de quelques problèmes techniques :

1. le pilote OpenOffice qui est censé causer avec les bases de données
MySQL n’a pas l’air de fonctionner correctement. La solution est de
faire causer OpenOffice avec une "source de données" ODBC, qui se
chargera de relayer vers la base de données Mysql, et pour ça il faut
demander l’installation de deux paquets de logiciels (sur le poste client) :

 unixodbc-bin qui contient ce qu’il faut pour faire une source de
données ODBC, et la configurer
 libmyodbc, la bibliothèque MySQL pour ODBC

2. Une deuxieme raison : le paquet unixodbc (amené avec
unixodbc-bin) ne s’installe pas tout à fait correctement (ce qui amène
OpenOffice à ronchonner à propos de la bibliothèque dynamique libodbcinst.so, qu’il ne trouve pas).

Comment réparer tout ça ?

Prenons les choses dans l’ordre : installation, corrections, création
d’une base de tests, configuration de la source ODBC, et essais sous
OpenOffice.

C’est parti.

Installer les paquets

Pas trop dur :

apt-get install unixodbc-bin libmyodbc

La procédure présente un écran "ODBC Setup" qui propose d’ajouter le
pilote mysql à la liste de pilotes supportés par ODBC. Il faut répondre oui.

(si vous loupez cette étape, vous pouvez vous rattraper par la commande

odbcinst -i -d -f /usr/share/libmyodbc/odbcinst.ini

que l’on trouve dans
/var/lib/dpkg/info/libmyodbc.postinst
)

Corriger le lien

Lors de l’installation, la bibliothèque libodbcinst.so.1.0.0 est mise
dans /usr/lib, et un lien symbolique libodbcinst.so.1 est créé vers
cette bibliothèque. Malheureusement il manque un autre lien
libodbcinst.so, qu’on
peut ajouter par la commande

ln -s /usr/lib/libodbcinst.so.1 /usr/lib/libodbcinst.so

Préparation essais.

L’administrateur crée une base de données de test

# mysqladmin create famille

et me donne tous les droits nécessaires

# mysql famille
grant all on famille.* to billaud@localhost identified by 'abc123';
quit

Depuis mon compte, je crée une table :

$ mysql famille -u billaud -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 18 to server version: 3.23.49-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> create table enfants (
    -> prenom varchar(30) primary key,
    -> annee int
    -> );
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Bye

Configurer la source ODBC

Le fonctionnement de la source de données ODBC est déterminé par un fichier
de configuration (.odbc.ini), qui indique quelle(s) bases(s) de données on
veut utiliser (sur quel serveur, nom de la base, type de la base...).
On peut l’éditer avec l’outil ODBCConfig.

$ ODBCConfig

Dans l’onglet User DSN (DSN = Data Source Name), cliquer sur Add.
Sélectionner le pilote MySQL, et cliquer sur OK. Apparait alors une boite
"Datasource properties".

Remplir Name avec "essai", Server avec "localhost", et Database avec
"famille", et sauver. Ignorez le message d’erreur qui s’affiche en sortant

QMutex::~QMutex: destroy failure: Périphérique ou ressource occupé

On vérifie que la source ODBC fonctionne avec isql

$ isql essai billaud abc123
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> list
[ISQL]ERROR: Could not SQLExecute
SQL> select * from enfants;
+-------+------+
| prenom| annee|
+-------+------+
+-------+------+
0 rows affected
SQL> quit

Essais sous OpenOffice

Lancer openoffice, créer/ouvrir un document.

Dans Outils > Source de données, onglet Général,
ajouter la source ODBC
 Nom : mabase
 Type : ODBC
 sdbc:odbc : essai

(dans ce document j’ai pris des noms différents famille/essai/mabase
pour bien distinguer entre bases, sources de données etc.)

Dans l’onglet ODBC, mettre le nom d’utilisateur (billaud) et cochez
mot de passe requis.

Passez ensuite à l’onglet Tables : on vous demande votre mot de passe
(abc123) et la table enfants apparait.

Pour afficher/éditer le contenu de la table enfants, passer dans
Affichage - source de données, puis développer mabase / Tables, cliquer sur enfants, et voila.

Répondre à cet article

1 commentaire
  • Posté le 1er juillet 2005 à 07:40, par syltao (lien)

    Juillet 2005 : Méthode aussi fonctionelle avec Debian testing ("ex Sarge").

    repondre message