2017-01-17 2 views
0

MariaDB (v 5.5.44)에서 MediaWiki 데이터베이스를 실행중인 연결된 서버에 SQL Server 2008 SP4 인스턴스가 액세스하고 있습니다. 나는 테이블에서 문제를 선택하지 수 있어요 :MariaDB에 대한 OpenQuery 업데이트가 '테이블이 없습니다.'

SELECT * 
FROM OPENQUERY(MEDIAWIKI, 
'SELECT * FROM wiki.page WHERE page_title = ''Test''') 

을하지만 테이블 업데이트하려고하면 :

UPDATE OPENQUERY(MEDIAWIKI, 
'SELECT * FROM wiki.page WHERE page_title = ''Test''') 
SET page_title = 'TestChange' 

을 나는 다음과 같은 오류 메시지가 얻을 :

OLE DB provider "MSDASQL" for linked server "MEDIAWIKI" returned message "Table 'def.page' doesn't exist". 
Msg 7343, Level 16, State 4, Line 1 
The OLE DB provider "MSDASQL" for linked server "MEDIAWIKI" could not UPDATE table "[MSDASQL]". 

사용자를 모든 권한이 있으므로 문제가되지 않아야합니다. MySQL을 실행하는 다른 연결된 서버에 대해서도 업데이트 할 수 있습니다. 어떤 도움이라도 대단히 감사합니다. 감사!

편집 : 동적 쿼리 문자열을 작성하고 연결된 서버에서 실행하여이 문제를 해결할 수 있습니다.이 시점에서 왜 이런 일이 발생했는지 궁금합니다.

답변

1

어떤 종류의 ODBC 드라이버를 사용합니까? 2 개, MariaDB 1 개, MySQL 1 개가 있습니다. 이 ODBC 중 하나에서 버그처럼 보입니다. 이제 "def"는 무엇을 의미합니까? MySQL 세계에는 카탈로그, 데이터베이스 및 스키마에 관해 많은 혼란이 있습니다. MySQL 결과 세트는 메타 데이터 (column info description)와 함께 리턴됩니다. 열 정보에는 "테이블 카탈로그"(항상 하드 코드 된 "def")와 "테이블 스키마"(데이터베이스)라는 여러 필드가 있습니다. 카탈로그는 현재 의미가 없으며 앞으로도 의미가 없을 수도 있습니다. 반면에 "스키마"는 UPDATE 명령 (UPDATE schema.table SET 필드 = 값 WHERE ...)에 넣을 수있는 것입니다.. 따라서 버그 중 하나는 ODBC 드라이버 중 하나가 "스키마"에서 "카탈로그"를 잘못 선택한다는 것입니다.

+0

MariaDB ODBC 드라이버를 사용하고 있습니다. 어떤 버그가 있습니까? – chazbot7

+1

사용중인 플러그인 :) 여기에 대한 버그를 제출했습니다. https://jira.mariadb.org/browse/ ODBC-80. 자세한 내용을 확인하거나 버그 업데이트를 구독하여 정보를 얻으시기 바랍니다. 그 동안 MySQL의 ODBC 커넥터를 사용하여 고정 될 때까지 –

+0

네, MySQL 드라이버가 완전히 작동합니다. MariaDB 드라이버를 업데이트하고 도움이되는지 확인 하겠지만 MySQL은 현재 확실히 작동 할 것입니다. 감사! – chazbot7

2

두 번째 블라디슬라프입니다. 'def'는 카탈로그 값으로 사용됩니다 (서버에서 반환 한 열 메타 데이터 나 INFORMATION_SCHEMA 테이블 'TABLES'또는 'COLUMNS'를 보면 MySQL과 MariaDB 커넥터 모두 테이블의 스키마를 카탈로그로 반환하고 스키마의 NULL은

입니다.

MariaDB Connector/ODBC는 메타 데이터 어딘가에서 스키마 (또는 카탈로그)로 'def'를 반환해야합니다. 어떤 버전을 사용하고 있습니까? 실제로 최신 버전에서 수정 될 수 있습니다. 그러나 JIRA Vladislav에 의해 생성 된 문제

+0

나는 조금 뒤에서 나는 1.0.5.1을 사용하고있는 것 같습니다. 나는 그것을 업데이트하고 그것이 작동하는지 확인합니다! 또한 MySQL 드라이버를 사용하면 업데이트가 제대로 작동하는 것을 확인할 수 있으므로 MariaDB 드라이버의 버그입니다. – chazbot7