Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Szerokie pole varchar powoduje błąd Żądana konwersja nie jest obsługiwana przy użyciu openquery z połączonym serwerem MySQL

W moich testach stwierdziłem, że dodanie CAST(field as char(4000)) również rozwiązał problem.

Utworzyłem następujące elementy w bazie danych MySQL 5.1:

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

Kiedy wykonałem następujące polecenie na SQL Server 2008 R2 SP1 (10.50.2500), używając 64-bitowego sterownika MySQL ODBC, w wersji 5.1 lub 5.2w:

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

generuje błąd:

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

ale jeśli dodam CAST :

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

wtedy to działa. Przesyłanie do char(4001) nie powiedzie się.

Nie jest dla mnie jasne, skąd pochodzi limit 4000 znaków.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyniki w promieniu - Optymalizacja powolnego zapytania MySQL

  2. Wstawianie danych blob w Javie za pomocą PreparedStatement

  3. Jak stworzyć bloga w PHP i bazie danych MySQL - Backend

  4. MYSQL - turecki znak

  5. PROBLEM:Mysql konwertuje Enum na Int