FireDAC GetTableNames MySQL

Я не могу получить имена таблиц из баз данных, отличных от базы данных, указанной в параметрах соединения.

Сначала я использовал GetTableNames, и он работал нормально, но я указывал ту же базу данных из параметров соединения.

DM.FDConnection.GetTableNames(ADatabse, '', APattern, tables, [osMy], [tkTable], False);

Но когда я попытался указать другую базу данных, я не работал. Затем я попытался использовать TFDMetaInfoQuery, но он тоже не работал:

FDMetaInfoQuery := TFDMetaInfoQuery.Create(nil);
FDMetaInfoQuery.Connection := DM.FDConnection;
FDMetaInfoQuery.MetaInfoKind := mkTables;
FDMetaInfoQuery.CatalogName := 'databasename'
FDMetaInfoQuery.Open;

while not FDMetaInfoQuery.Eof do
begin
  Result := Result + sLineBreak + FDMetaInfoQuery.FieldByName('TABLE_NAME').AsString;
  FDMetaInfoQuery.Next;
end;

Но я могу получить все названия баз данных:

FDMetaInfoQuery := TFDMetaInfoQuery.Create(nil);
FDMetaInfoQuery.Connection := DM.FDConnection;
FDMetaInfoQuery.MetaInfoKind := mkCatalogs;
FDMetaInfoQuery.Open;

while not FDMetaInfoQuery.Eof do
begin
  Result := Result + sLineBreak + FDMetaInfoQuery.FieldByName('CATALOG_NAME').AsString;
  FDMetaInfoQuery.Next;
end;

Я уже пытался указать эти параметры в соединении, но ничего не изменилось:

DM.FDConnection.Params.Add('MetaDefSchema=*');
DM.FDConnection.Params.Add('MetaDefCatalog=*');
DM.FDConnection.Params.Add('MetaCurSchema=*');
DM.FDConnection.Params.Add('MetaCurCatalog=*');

Итак, как мне получить имена таблиц из других баз данных?

1 ответ

Решение

Я узнал, мой самый вопрос - ответ. Я должен включить osOther в TFDPhysObjectScopes..

DM.FDConnection.GetTableNames(ADatabse, '', APattern, tables, [osMy, osOther], [tkTable], False);
Другие вопросы по тегам