Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ein breites Varchar-Feld verursacht den Fehler „Angeforderte Konvertierung wird nicht unterstützt“ bei Verwendung von OpenQuery mit MySQL-Verbindungsserver

Bei meinen Tests habe ich festgestellt, dass das Hinzufügen von CAST(field as char(4000)) hat das Problem auch gelöst.

Ich habe Folgendes in einer MySQL 5.1-Datenbank erstellt:

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

Als ich Folgendes auf SQL Server 2008 R2 SP1 (10.50.2500) unter Verwendung des MySQL-ODBC-Treibers 64-Bit, entweder Version 5.1 oder 5.2w, ausgeführt habe:

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

es erzeugt den Fehler:

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

aber wenn ich CAST hinzufüge :

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

dann funktioniert es. Casting auf char(4001) schlägt fehl.

Mir ist nicht klar, woher die 4000-Zeichen-Grenze kommt.