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.
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.