Utiliser TMS Data Modeler avec une base de données MySQL

Bénéficiant désormais d'une licence All Access chez TMS Software, je joue un peu avec leurs composants que je n'avais pas eu l'occasion d'utiliser et les utilitaires qu'ils publient.

En travaillant sur un projet web il y a quelques jours j'avais besoin de faire du reverse engeneering sur une base de données MySQL afin d'en générer le MCD car la version manuscrite sur papier commençait à devenir un peu touffue et illisible.

Côté configuration j'utilise EasyPHP DevServer en local sous Windows 10 avec une base de données sous MySQL 5.7 C'est l'installation de EasyPHP par défaut dans cette version. Ma base a originellement été créée avec des requêtes SQL faites à la main et un peu de phpMyAdmin pour les ajustements post mise en production. C'est plus simple pour générer les ALTER TABLE à reproduire ensuite sur les différentes versions de la base de données.

Après installation de TMS Data Modeler j'ai été confronté à un certain nombre d'erreurs avant de pouvoir m'en servir alors voici les solutions correspondantes au cas où vous les auriez aussi.

La première de ces erreurs est l'absence des drivers clients du moteur MySQL : "cannot load vendor library". Ca se règle assez simplement car il suffit de trouver les fichiers libmysql.dll et libmysqld.dll pour les placer dans le dossier de TMS Data Modeler.

Dans mon cas je les avais dans le dossier de EasyPHP "C:\Program Files (x86)\EasyPHP-Devserver-17\eds-binaries\dbserver\mysql5717x86x170616122550\lib". Il a suffi de copier les deux DLL dans le dossier "C:\Program Files (x86)\TMSSoftware\Data Modeler" pour faire disparaître l'anomalie et permettre à FireDAC d'accéder au moteur de base de données locale.

Vous pouvez aussi trouver la denrière version des DLL de MySQL en installant le serveur depuis une version propre récupérée directement sur le site MySQL.

La première fois je n'avais copié que libmysqld.dll et je ne me suis retrouvé avec une violation d'accès sur ntdll.dll

Correction faite en copiant bien la librairie libmysql.dll puisque c'est en fait le fichier utilisé par TMS Data Modeler et sa version de FireDAC pour accéder aux bases de données MySQL.

Et c'est là que FireDAC me signala l'absence de certaines tables dans ma base MySQL : performance_schema.session_variables par exemple. La raison en est simple : la version 5.7 de MySQL utilise un certain nombre de tables en plus de celles qui étaient présentes dans les versions précédentes, mais EasyPHP ne fait pas de mise à niveau dans les bases fournies en standard. C'est donc à nous de le faire si on veut être à niveau.

Il a donc fallu lancer la commande suivante dans l'interpréteur de commandes de Windows :

"C:\Program Files (x86)\EasyPHP-Devserver-17\eds-binaries\dbserver\mysql5717x86x170616122550\bin\mysql_update" -u root -p --force

Vous devrez bien entendu l'adapter à la version de logiciel que vous utilisez, même si ce n'est pas EasyPHP qui a installé MySQL.

Une fois ces étapes passées, j'ai enfin pu travailler avec TMS Data Modeler et importer ma base MySQL existante pour en dessiner le diagramme à l'écran, l'imprimer, le mettre à jour, ...


Mug Pascal case in AlexandrieMug Chinese New Year 2023 : year of the rabbit