sql >> Databasteknik >  >> RDS >> Mysql

Brett varchar-fält orsakar Begärd konvertering stöds inte fel med openquery med MySQL-länkad server

I mina tester upptäckte jag att jag lade till CAST(field as char(4000)) löste också problemet.

Jag skapade följande i en MySQL 5.1-databas:

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

När jag körde följande på SQL Server 2008 R2 SP1 (10.50.2500), med MySQL ODBC-drivrutin 64-bitars, antingen version 5.1 eller 5.2w:

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

det genererar felet:

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

men om jag lägger till CAST :

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

då funkar det. Casting till char(4001) kommer att misslyckas.

Det är inte klart för mig var gränsen på 4000 tecken kommer ifrån.



  1. JSON_INSERT() – Infoga värden i ett JSON-dokument i MySQL

  2. pyodbc och mySQL

  3. Android Room kompileringstid varning om kolumn i främmande nyckel som inte ingår i ett index. Vad betyder det?

  4. Hur ersätter man kommaseparerade avdelnings-ID med respektive namn?