Mysql
 sql >> Base de données >  >> RDS >> Mysql

Un champ varchar large provoque une erreur La conversion demandée n'est pas prise en charge lors de l'utilisation d'openquery avec le serveur lié MySQL

Lors de mes tests, j'ai trouvé que l'ajout de CAST(field as char(4000)) a également résolu le problème.

J'ai créé ce qui suit dans une base de données MySQL 5.1 :

create table tmp_patrick (summary_text varchar(4096));
insert into tmp_patrick values ('foo');

Lorsque j'ai exécuté ce qui suit sur SQL Server 2008 R2 SP1 (10.50.2500), en utilisant le pilote MySQL ODBC 64 bits, version 5.1 ou 5.2w :

select * from openquery(MYSQL, 'select summary_text from scratch.tmp_patrick')

il génère l'erreur :

OLE DB provider "MSDASQL" for linked server "MYSQL" returned message "Requested conversion is not supported.".
Msg 7341, Level 16, State 2, Line 1
Cannot get the current row value of column "[MSDASQL].summary_text" from OLE DB provider "MSDASQL" for linked server "MYSQL". 

mais si j'ajoute CAST :

select * from openquery(MYSQL, 'select CAST(summary_text as char(4000)) from scratch.tmp_patrick')

alors ça marche. La diffusion vers char(4001) échouera.

Je ne comprends pas d'où vient la limite de 4 000 caractères.