Comment puis-je activer la croix-base de données des jointures dans mysql?
Je suis en train de le port certains de données de ma base de données de production pour mon bac à sable à l'aide d'une requête comme ceci:
INSERT `dbsandbox`.`SomeTable`(Field1, Field2, Field3)
SELECT t.Field1, t.Field2, t.Field3
FROM `dbprod`.`SomeTable` t;
Quand j'cette tentative de croix-base de données rejoindre j'obtiens l'erreur suivante:
ERREUR 1142 (42000): SÉLECTIONNEZ command denied to user 'myusername'@'serveur.domaine.tdl "pour la table "SomeTable'
L'utilisateur en question a l'autorisation pour les tableaux en question pour les deux bases de données. J'ai essayé dans les deux unix, mysql client et le windows MySQL Query Browser application avec le même résultat.
Ce qui me manque?
Vous devez vous connecter pour publier un commentaire.
Il s'avère que c'était un problème d'autorisations. La source de base de données requis un mot de passe pour le nom d'utilisateur j'ai été en utilisant pour accéder à toutes les tables. La cible requis uniquement le nom d'utilisateur sur le localhost.
Même si je lance le client MySQL à l'aide d'un mot de passe à chaque fois dans le contexte de la requête de base de données d'une autre tentative de connexion. Cette connexion ne me souviens pas que j'ai authentifié à l'encontre du client avec un mot de passe pour la connexion à partir de bac à sable pour la production de la base de données a échoué. Apparemment, indiquant explicitement le nom de base de données pour une table implique parfois de la nécessité d'une autre connexion, ainsi.
La réponse a été de lancer la requête à partir de la base de données de production, reportez-vous aux tables locales sans la base de données qualificatif, puis l'insérer à travers le bac à sable, tables de base de données. Cette fois, il a travaillé:
UTILISATION dbprod
INSÉRER
dbsandbox
.SomeTable
(Champ1, Champ2, Champ3)SÉLECTIONNEZ t.Champ1, t.Champ2, t.Field3
DE
SomeTable
t;Cela ressemble à un problème d'autorisations. Souvent les autorisations de l'utilisateur sont mis en place sur une base de données dans une base de données de la mode, de sorte que l'utilisateur pour la destination n'ont pas accès à la source.
Assurez-vous d'abord que vous pouvez faire le sélectionner à partir de la base de données source.
Cela fonctionne? Si non, alors vous avez besoin pour accorder à l'utilisateur de sélectionner les autorisations sur la base de données source.
Les deux bases de données sont dans le même serveur?