mysql эквивалент dblink oracle [дубликат]

Добавив следующие исправления для меня (Android studio 2.3.2):

build.gradle (Project)

buildscript {
repositories {
    ...
    jcenter()
}
dependencies {
    ...
    classpath 'me.tatarka:gradle-retrolambda:3.4.0' // DEPENDENCY
    ...
   }
}

build.gradle (Module: app)

apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda' //PLUGIN

android {
    ...
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    } // SET JAVA VERSION
    ...
}
23
задан Palani 14 October 2009 в 13:41
поделиться

2 ответа

Я могу придумать четыре возможных обходных пути для вашего сценария:

  1. использовать имена с полной квалификацией-таблицей при запросе таблицы external . MySQL поддерживает dbname.tablename -syntax для доступа к таблицам за пределами текущей области базы данных. Это требует, чтобы пользователь, подключенный в настоящий момент, имел соответствующие права на чтение из запрошенной таблицы в другом физическом db.
  2. , если ваша внешняя база данных работает на другом сервере MySQL (либо на том же компьютере, либо через сеть соединение), вы можете использовать репликацию для постоянного обновления копии удаленной таблицы только для чтения. Репликация возможна только в том случае, если вы используете два отдельных экземпляра MySQL.
  3. используют механизм хранения FEDERATED MySQL для виртуального импорта таблицы в ваш текущая база данных. Это снимает требование предоставления прав доступа к текущему пользователю во вторую базу данных, поскольку учетные данные выдаются с CREATE TABLE -стратетом при использовании механизма хранения FEDERATED. Это также работает с базами данных, запущенными на разных физических серверах или разных экземплярах MySQL. Я думаю, что это будет самый плохой вариант исполнения и имеет некоторые ограничения - более или менее важные в зависимости от вашего сценария использования и ваших требований.
  4. Это расширение метода 1 . Вместо того, чтобы указывать имена полностью квалифицированных таблиц каждый раз, когда вы запрашиваете информацию из вашей внешней таблицы, вы можете просто создать представление в вашей текущей базе данных на основе простой SELECT <<columns>> FROM <<database>>.<<table>>. Это похоже на способ работы FEDERATED -метод, но ограничивается таблицами в одном экземпляре MySQL.

Лично я бы рассмотрел метод (4) как наиболее полезный, но другие могут также быть возможными обходными способами в зависимости от ваших требований.

40
ответ дан imtheman 27 August 2018 в 20:23
поделиться
  • 1
    Двигатель FEDERATED может решить мою проблему. Я это попробую. – Palani 15 October 2009 в 12:08
  • 2
    Я думаю, что FEDERATED storage engine является ближайшим решением для ссылки на базу данных oracle в сценарии баз данных, работающих на разных физических серверах или разных экземплярах MySQL. В том же экземпляре вы можете делать все с помощью полных имен таблиц. Спасибо, Стефан. – csonuryilmaz 20 March 2015 в 09:46

На данный момент нет равного метода MySQL, см. этот пост . Однако, поскольку плакат предполагает, что вы можете обойтись, если базы данных находятся на одной машине, просто добавив имя базы данных перед именем таблицы.

Также см. this , ему 6 лет, но он еще не разрешен. Он закрыт и, вероятно, больше не включен в свой список.

5
ответ дан Filip Ekberg 27 August 2018 в 20:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: