# MySQL

Cette rubrique explique comment configurer la connectivité à une cible MySQL via le connecteur cible MySQL. MySQL peut être utilisé comme base de données cible dans une tâche Replicate uniquement. Avant de pouvoir vous connecter à une cible MySQL, vous devez configurer les [Autorisations requises](https://help.qlik.com/fr-FR/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/mysql-target.htm#Permissi) sur la base de données. Si vous vous connectez à MySQL via Passerelle de déplacement des données, vous devez également installer le pilote, comme décrit à la section [Configuration du pilote](https://help.qlik.com/fr-FR/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/mysql-target.htm#Driver).

Pour des informations sur les limitations et les considérations à prendre en compte lors de l'utilisation du connecteur MySQL, voir [Limitations et considérations générales](https://help.qlik.com/fr-FR/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/mysql-target.htm#Limitati).

## Définition des propriétés de connexion

Pour configurer le connecteur, procédez comme suit :

1. Dans Connexions, cliquez sur Créer une connexion.

2. Sélectionnez le connecteur cible MySQL et fournissez les paramètres suivants :

### Cible de données

* Passerelle de données : Lorsque vous travaillez avec Passerelle de déplacement des données, sélectionnez la passerelle de données qui sera utilisée pour tester la connexion à la cible MySQL. Il doit s'agir de la même passerelle que celle utilisée pour accéder à la source de données.

  Note Informations

  * Ce champ n'est pas disponible avec l'abonnement Démarreur Qlik Talend Cloud, car Passerelle de déplacement des données n'est pas supporté avec ce niveau d'abonnement.

  * Vous devez également installer le pilote approprié sur le poste Passerelle de déplacement des données. Pour des informations détaillées, voir la section [Configuration du pilote](https://help.qlik.com/fr-FR/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/mysql-target.htm#Driver) ci-dessous.

* Fournisseur de cloud : sélectionnez l'une des options suivantes, selon les besoins :

  * Aucun

    * Pour MySQL on-premises, MariaDB, Amazon Aurora ou Microsoft Azure Database for MySQL - Flexible Server.
    * Lorsque vous travaillez sans Passerelle de déplacement des données

  * Amazon RDS

    Pour Amazon RDS for MariaDB ou Amazon RDS for MySQL.

  * Google Cloud

    Pour Google Cloud SQL for MySQL.

  * Microsoft Azure

    Pour Microsoft Azure Database for MySQL.

* Serveur : nom d'hôte ou adresse IP de l'ordinateur sur lequel la base de données MySQL est installée.

* Port : port utilisé lors de la connexion à la base de données. Le port 3306 est le port par défaut.

### Propriétés de compte

Nom d'utilisateur et Mot de passe : nom d'utilisateur et mot de passe d'un utilisateur autorisé à accéder à la base de données MySQL Server.

### Propriétés de base de données

* Target Database Type : sélectionnez l'une des options suivantes :
  * Specific database : lorsque cette option est sélectionnée, tous les schémas sources sont chargés dans la Database (Base de données) spécifiée.
  * Multiple databases : lorsque cette option est sélectionnée, chacun des schémas sources est chargé dans sa base de données correspondante. De plus, par défaut, l'ensemble des tables de contrôle sont répliquées dans un nouveau schéma appelé attrep\_control. Pour plus d'informations sur les tables de contrôle, voir [Tables de contrôle](https://help.qlik.com/fr-FR/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/control_tables.htm).
* Max file size (KB) : sélectionnez ou saisissez la taille maximale (en Ko) d'un fichier CSV avant qu'il soit chargé dans la base de données cible MySQL. La valeur par défaut est 32 000 Ko.
* Parallel load threads : l'augmentation du nombre de threads peut améliorer les performances lors du chargement de données dans la base de données cible MySQL. Notez que la définition d'un grand nombre de threads peut avoir un effet inverse sur les performances de la base de données, étant donné qu'une connexion distincte est nécessaire pour chaque thread.

### Propriétés internes

Les propriétés internes s'adressent à des cas d'utilisation spéciaux et ne sont par conséquent pas exposées dans la boîte de dialogue. Utilisez-les uniquement si Qlik Support vous le demande.

Utilisez les boutons the Créer nouveau icon et the Annuler icon à droite des champs pour ajouter ou supprimer des propriétés, suivant les besoins.

### Nom

Nom d'affichage de la connexion.

## Conditions préalables requises

### Autorisations requises

L'utilisateur spécifié dans les paramètres du connecteur doit être titulaire des droits suivants :

* Accès au compte MySQL
* Privilèges Lecture/Écriture dans la base de données MySQL
* Autorisations suivantes pour chaque schéma cible impliqué dans la réplication :
  * ALTER
  * CREATE
  * CREATE TEMPORARY TABLES
  * DELETE
  * DROP
  * INSERT
  * SELECT
  * UPDATE

### Configuration du pilote

Cette section explique comment installer le driver requis. Le processus implique l'exécution d'un script qui téléchargera, installera et configurera automatiquement le driver requis. Vous pouvez également exécuter des scripts permettant de mettre à jour et de désinstaller le driver, si nécessaire.

Préparation de l'installation

* Assurez-vous que Python 3.6 ou une version ultérieure est installé sur le serveur de passerelle Déplacement des données.

  Python est préinstallé sur la plupart des distributions Linux. Vous pouvez vérifier la version de Python installée sur votre système en exécutant la commande suivante :

  python3 --version

Installation de driver

Pour télécharger et installer le driver :

1. Sur le poste de passerelle Déplacement des données, remplacez le répertoire de travail par :

   opt/qlik/gateway/movement/drivers/bin

2. Exécutez la commande suivante :

   Syntaxe :

   ./install mysql

   Si le driver ne peut pas être téléchargé (en raison de restrictions d'accès ou de problèmes techniques), un message s'affichera, vous indiquant où télécharger et copier le driver sur le poste de passerelle Déplacement des données. Une fois que c'est fait, exécutez de nouveau la commande install mysql.

   Sinon, le CLUF du driver apparaîtra.

3. Effectuez l'une des opérations suivantes :

   * Appuyez à plusieurs reprises sur [Entrée] pour parcourir lentement le CLUF.
   * Appuyez à plusieurs reprises sur la barre d'espace pour parcourir rapidement le CLUF.
   * Appuyez sur q pour quitter le texte de licence et faire apparaître les options d'acceptation du CLUF.

4. Effectuez l'une des opérations suivantes :

   * Saisissez « y » et appuyez sur [Entrée] pour accepter le CLUF et démarrer l'installation.

   * Saisissez « n » et appuyez sur [Entrée] pour rejeter le CLUF et quitter l'installation.

   * Saisissez « v » et appuyez sur [Entrée] pour afficher de nouveau le CLUF.

   Le driver sera installé.

Mise à jour du driver

Exécutez la commande update si vous souhaitez désinstaller des versions précédentes du driver avant d'installer le driver fourni.

Pour télécharger et mettre à jour le driver :

1. Sur le poste de passerelle Déplacement des données, remplacez le répertoire de travail par :

   opt/qlik/gateway/movement/drivers/bin

2. Exécutez la commande suivante :

   Syntaxe :

   ./update mysql

   Si le driver ne peut pas être téléchargé (en raison de restrictions d'accès ou de problèmes techniques), un message s'affichera, vous indiquant où télécharger et copier le driversur le poste de passerelle Déplacement des données. Une fois que c'est fait, exécutez de nouveau la commande update mysql.

   Sinon, le CLUF du driver apparaîtra.

3. Effectuez l'une des opérations suivantes :

   * Appuyez à plusieurs reprises sur [Entrée] pour parcourir lentement le CLUF.
   * Appuyez à plusieurs reprises sur la barre d'espace pour parcourir rapidement le CLUF.
   * Appuyez sur q pour quitter le texte de licence et faire apparaître les options d'acceptation du CLUF.

4. Effectuez l'une des opérations suivantes :

   * Saisissez « y » et appuyez sur [Entrée] pour accepter le CLUF et démarrer l'installation.
   * Saisissez « n » et appuyez sur [Entrée] pour rejeter le CLUF et quitter l'installation.
   * Saisissez « v » et appuyez sur [Entrée] pour passer le CLUF en revue depuis le début.

   L'ancien driver sera désinstallé et le nouveau driver sera installé.

Désinstallation du driver

Exécutez la commande uninstall si vous souhaitez désinstaller le driver.

Pour désinstaller le driver :

1. Arrêtez toutes les tâches configurées pour utiliser ce connecteur.

2. Sur le poste de passerelle Déplacement des données, remplacez le répertoire de travail par :

   opt/qlik/gateway/movement/drivers/bin

3. Exécutez la commande suivante :

   Syntaxe :

   ./uninstall mysql

   le driver sera désinstallé.

### Installation manuelle du pilote

Vous devez tenter d'installer manuellement le driver uniquement si l'installation de pilote automatisée n'a pas fonctionné.

Une fois la Passerelle de déplacement des données installée, téléchargez le pilote mysql-connector-odbc-&lt;version&gt;.x86\_64.rpm. Vous trouverez un lien de téléchargement direct vers la version supportée sous binary-artifacts dans /opt/qlik/gateway/movement/drivers/manifests/mysql.yaml. Une fois le téléchargement terminé, copiez le RPM sur le poste Passerelle de déplacement des données.

Sur le serveur Data Movement gateway, ouvrez une invite shell et procédez comme suit :

1. Arrêtez le service Data Movement gateway :

   sudo systemctl stop repagent

2. Confirmez éventuellement l'arrêt du service :

   sudo systemctl status repagent

   Le statut doit être comme suit :

   Active: inactive (dead) since &lt;timestamp&gt; ago

3. Installez le pilote sur le poste Data Movement gateway.

4. Remplacez le répertoire de travail par &lt;Data Movement gateway-Install-Dir&gt;/bin.

5. Copiez l'emplacement du pilote dans le fichier `site_arep_login.sh` :

   `echo "export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/usr/lib64" >> site_arep_login.sh`

   Le pilote est ainsi ajouté à « LD\_LIBRARY\_PATH » et son emplacement est mis à jour dans le fichier site\_arep\_login.sh.

6. Confirmez éventuellement que l'emplacement du pilote a été copié :

   ```
   cat site_arep_login.sh
                           
   ```

7. Vérifiez si le fichier /etc/odbcinst.ini contient une entrée pour MySQL, comme dans l'exemple suivant :

   ` [MySQL ODBC 8.0 Unicode Driver]
                            ` ` Driver   = /usr/lib64/libmyodbc8w.so
                            ` ` UsageCount  = 1
                            `

8. Démarrez le service Data Movement gateway :

   sudo systemctl start repagent

9. Confirmez éventuellement le lancement du service :

   sudo systemctl status repagent

   Le statut doit être comme suit :

   Active: active (running) since &lt;timestamp&gt; ago

## Limitations et considérations générales

Lors de l'utilisation de MySQL comme cible de réplication, les limitations suivantes s'appliquent :

* Lors d'une réplication dans la base de données cible MariaDB, si la valeur DATETIME est définie sur zéro, vous devez définir une transformation qui remplace DATETIME par des valeurs valides. Par exemple :

  `replace($datetime_column,'9999-12-31 23:59:59','2000-01-01 22:00:00')`

  Note InformationsCette limitation ne s'applique pas à la base de données Microsoft Azure pour MySQL.

* En raison du mode opératoire de MySQL, lors du chargement de données dans une cible MySQL au cours d'une tâche Chargement complet, les erreurs de clés dupliquées ne seront pas signalées dans les journaux.

* Lors de la mise à jour de la valeur d'une colonne pour la remplacer par sa valeur existante, un résultat de zéro ligne affectée est renvoyé par MySQL (contrairement à Oracle et Microsoft SQL Server qui effectuent une mise à jour d'une ligne).

  Cela génère une entrée dans la `attrep_apply_exceptions Control Table` et l'avertissement suivant :

  ` Some changes from the source database had no impact when applied to the target database. See attrep_apply_exceptions table for details.  `

* Si vous devez répliquer des caractères emoji de 4 octets, le jeu de caractères du schéma cible doit être défini sur utf8mb4.

* Lorsqu'une table source contient un grand nombre de colonnes, il se peut que MySQL renvoie une erreur `Row size too large (> 8126)`, car, dans MySQL, la taille de ligne maximale par défaut est de 8 126 octets. Lors de l'utilisation de sources d'applications SaaS, cette erreur se produit pendant l'exécution. Lors de l'utilisation d'autres types de sources tels que des bases de données, l'erreur se produit pendant la préparation de tâche. Pour remédier à cette limitation, utilisez l'une des approches suivantes :

  * **Approche recommandée :** Une fois les données ingérées, retirez les colonnes dont vous n'avez pas besoin sur la cible. Pour plus d'informations sur la façon de procéder, consultez [Suppression de colonnes](https://help.qlik.com/fr-FR/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Introduction/Managing-datasets.htm#Removing). Si l'erreur persiste, retirez d'autres colonnes.

  * **Autre mesure d'atténuation :** Si vous avez besoin d'inclure toutes les colonnes sources dans la table cible, notez qu'il existe certaines configurations de base de données MySQL qui le permettent. L'une d'elles consiste à augmenter la taille de page MySQL de sorte qu'elle soit suffisamment grande pour accueillir la taille de ligne.

    Note InformationsPour les sources dont les tailles de ligne dépassent la limite de 65 535 octets, vous devez convertir le champ source en un type de données qui supporte des tailles de ligne supérieures. Cela est dû à une limitation connue quant à la taille maximale d'enregistrement de ligne. Pour plus d'informations, consultez la [documentation MySQL sur les limites de taille de ligne](https://dev.mysql.com/doc/refman/8.4/en/column-count-limit.html).

## Types de données

Les informations de type de données natif sont préservées et affichées dans la colonne Type de données natif des vues d'ensemble de données. Si la colonne n'est pas visible, vous devez ouvrir le sélecteur de colonnes de la vue d'ensemble de données et sélectionner la colonne Type de données natif.

Types de données pris en charge

| Types de données Qlik Cloud | Types de données MySQL |
| --- | --- |
| BOOL | BOOL |
| BYTES | Si longueur est =&gt; 1 et =&lt; 8 095 :<br><br>VARBINARY (Longueur)<br><br>Si longueur est =&gt; 8 096 et =&lt; 65 535 :<br><br>BLOB<br><br>Si longueur est =&gt; 65 536 et =&lt; 16 777 215 :<br><br>MEDIUMBLOB<br><br>Si longueur est =&gt; 16 777 216 et =&lt; 2 147 483 647 :<br><br>LONGBLOB |
| DATE | DATE |
| TIME | TIME |
| DATETIME | Si l'échelle est =&gt; 0 et =&lt; 6 :<br><br>DECIMAL (p,s)<br><br>Si l'échelle est =&gt; 7 et =&lt; 12 :<br><br>VARCHAR (37) |
| INT1 | TINYINT |
| INT2 | SMALLINT |
| INT4 | INTEGER |
| INT8 | BIGINT |
| NUMERIC | Si échelle est =&gt; 0 et =&lt; 30 :<br><br>DECIMAL (p,s)<br><br>Si échelle est =&gt; 31 et =&lt; 100 :<br><br>VARCHAR (45) |
| REAL4 | FLOAT |
| REAL8 | DOUBLE |
| STRING | Si longueur est =&gt; 1 et =&lt; 8 095 :<br><br>VARCHAR (Longueur)<br><br>Si longueur est =&gt; 8 096 et =&lt; 65 535 :<br><br>TEXT<br><br>Si longueur est =&gt; 65 536 et =&lt; 16 777 215 :<br><br>MEDIUMTEXT<br><br>Si longueur est =&gt; 16 777 216 et =&lt; 2 147 483 647 :<br><br>LONGTEXT |
| UINT1 | UNSIGNED TINYINT |
| UINT2 | UNSIGNED SMALLINT |
| UINT4 | UNSIGNED INTEGER |
| UINT8 | UNSIGNED BIGINT |
| WSTRING | Si longueur est =&gt; 1 et =&lt; 8 095 :<br><br>VARCHAR (Longueur)<br><br>Si longueur est =&gt; 8 096 et =&lt; 65 535 :<br><br>TEXT<br><br>Si longueur est =&gt; 65 536 et =&lt; 16 777 215 :<br><br>MEDIUMTEXT<br><br>Si longueur est =&gt; 16 777 216 et =&lt; 2 147 483 647 :<br><br>LONGTEXT |
| BLOB | Lorsque l'option Autoriser une taille de LOB illimitée est activée :<br><br><ul> <li>LONGBLOB</li> </ul><br><br>Lorsque l'option Limiter la taille de LOB à est activée :<br><br><ul> <li> <p>Si la valeur spécifiée est inférieure ou égale à 63&nbsp;Ko&nbsp;:</p> <p>BLOB</p> </li> </ul><br><br><ul> <li> <p>Si la valeur spécifiée est supérieure ou égale à 64&nbsp;Ko&nbsp;:</p> <p>LONGBLOB</p> </li> </ul><br><br>Pour des informations sur la limitation de la taille de LOB, voir [Metadata](https://help.qlik.com/fr-FR/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/replicating-settings-metadata.htm#ar_tasks_custom_1624443382_1693100). |
| NCLOB | Lorsque l'option Autoriser une taille de LOB illimitée est activée :<br><br><ul> <li>TEXT</li> </ul><br><br>Lorsque l'option Limiter la taille de LOB à est activée :<br><br><ul> <li> <p>Si la valeur spécifiée est inférieure ou égale à 63&nbsp;Ko&nbsp;:</p> <p>TEXT</p> </li> </ul><br><br><ul> <li> <p>Si la valeur spécifiée est supérieure ou égale à 64&nbsp;Ko&nbsp;:</p> <p>LONGTEXT</p> </li> </ul><br><br>Pour des informations sur la limitation de la taille de LOB, voir [Metadata](https://help.qlik.com/fr-FR/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/replicating-settings-metadata.htm#ar_tasks_custom_1624443382_1693100). |
| CLOB | Lorsque l'option Autoriser une taille de LOB illimitée est activée :<br><br><ul> <li>TEXT CHARACTER SET UTF-16</li> </ul><br><br>Lorsque l'option Limiter la taille de LOB à est activée :<br><br><ul> <li> <p>Si la valeur spécifiée est inférieure ou égale à 63&nbsp;Ko&nbsp;:</p> <p>TEXT CHARACTER SET UTF-16</p> </li> </ul><br><br><ul> <li> <p>Si la valeur spécifiée est supérieure ou égale à 64&nbsp;Ko&nbsp;:</p> <p>LONGTEXT CHARACTER SET UTF-16</p> </li> </ul><br><br>Pour des informations sur la limitation de la taille de LOB, voir [Metadata](https://help.qlik.com/fr-FR/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/replicating-settings-metadata.htm#ar_tasks_custom_1624443382_1693100). |