Je peux penser à quatre solutions de contournement possibles pour votre scénario :
- utiliser des noms de table complets lors de la requête pour le externe table. MySQL prend en charge le
dbname.tablename
-syntax pour accéder aux tables en dehors de la portée de la base de données actuelle. Cela nécessite que l'utilisateur actuellement connecté dispose des droits appropriés pour lire à partir de la table demandée dans une autre base de données physique. - si votre base de données externe s'exécute sur un serveur MySQL différent (soit sur la même machine, soit via une connexion réseau), vous pouvez utiliser la réplication pour mettre à jour en permanence une copie en lecture seule de la table distante. La réplication n'est possible que si vous exécutez deux instances MySQL distinctes.
- utiliser le
FEDERATED
Moteur de stockage MySQL pour importer virtuellement la table dans votre base de données actuelle. Cela supprime l'obligation de donner à l'utilisateur actuel des droits d'accès à la deuxième base de données car les informations d'identification sont données avec leCREATE TABLE
-instruction lors de l'utilisation deFEDERATED
moteur de stockage. Cela fonctionne également avec les bases de données exécutées sur différents serveurs physiques ou différentes instances MySQL. Je pense que ce sera l'option la moins performante et qu'elle a quelques limites - plus ou moins important selon votre scénario d'utilisation et vos exigences. - Il s'agit d'une extension de la méthode 1. Au lieu d'avoir à spécifier les noms de table complets chaque fois que vous demandez des informations à votre externe table, vous pouvez simplement créer une vue
dans votre base de données actuelle basée sur un simple
SELECT <<columns>> FROM <<database>>.<<table>>
. Cela ressemble à la manière, leFEDERATED
-method fonctionne, mais est limité aux tables sur la même instance MySQL.
Personnellement, je considérerais la méthode (4) comme la plus utile - mais les autres pourraient également être des solutions de contournement possibles en fonction de vos besoins.