Lorsque vous utilisez un serveur lié MySQL sur SQL Server et que vous faites des requêtes de sélection, vous pouvez avoir des erreurs à l’exécution de celle-ci, alors que l’exécution de la requête directement sur MySQL ne génère pas d’erreur.

SQL Server et serveur lié MySQL

The (maximum) expected data length is X while the returned data length is Y

Ce souci peut se produire lors de l’utilisation dans la requête dans champ CHAR et non VARCHAR (ou bien lors de l’utilisation d’un ENUM). Comme le type CHAR a une taille fixée, il s’attend à recevoir cette taille. S’il ne reçoit pas la taille exacte, ce message est généré.

Pour résoudre le problème, deux solutions :

  • passer le champ en VARCHAR si c’est possible (solution idéale)
  • contourner le souci via DBCC TRACEON(8765); à mettre avant la requête.

Il existe quelques pages sur ce souci, sur StackOverflow ou sur le bugtracker MySQL.