Mysql
 sql >> база данни >  >> RDS >> Mysql

Широко поле за varchar причинява грешка в заявеното преобразуване не се поддържа при използване на openquery с MySQL свързан сървър

При моето тестване открих, че добавянето на CAST(field as char(4000)) също реши проблема.

Създадох следното в база данни на MySQL 5.1:

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

Когато изпълних следното на SQL Server 2008 R2 SP1 (10.50.2500), използвайки MySQL ODBC драйвер 64-битов, версия 5.1 или 5.2w:

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

генерира грешката:

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

но ако добавя CAST :

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

тогава работи. Прехвърлянето към char(4001) няма да е успешно.

Не ми е ясно откъде идва ограничението от 4000 знака.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Броят дни в периода от време?

  2. Получаване на PHP PDO връзка от mysql_connect()?

  3. SQL заявка на множество стойности в една клетка

  4. Не може да се създаде таблица в MySQL, защото тя вече съществува

  5. MySQL str_to_date произвежда NULL въпреки валидното форматиране