sql >> Database >  >> RDS >> Mysql

Breed varchar-veld veroorzaakt Gevraagde conversie wordt niet ondersteund fout bij gebruik van openquery met MySQL-gekoppelde server

Tijdens mijn tests ontdekte ik dat het toevoegen van CAST(field as char(4000)) heeft het probleem ook opgelost.

Ik heb het volgende gemaakt in een MySQL 5.1-database:

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

Toen ik het volgende uitvoerde op SQL Server 2008 R2 SP1 (10.50.2500), met MySQL ODBC-stuurprogramma 64-bit, versie 5.1 of 5.2w:

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

het genereert de fout:

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

maar als ik CAST toevoeg :

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

dan werkt het. Casten naar char(4001) zal mislukken.

Het is mij niet duidelijk waar de limiet van 4000 tekens vandaan komt.



  1. MySQL-prestaties - IN-clausule versus gelijk aan (=) voor een enkele waarde

  2. Rails:een afbeelding uit een blob-veld in een database weergeven

  3. CONSTRAINT om waarden uit een op afstand gerelateerde tabel te controleren (via join etc.)

  4. Hoe MySQL-server te starten op Windows XP