J'ai un long script que j'ai besoin d'exécuter sur plusieurs bases de données différentes (toutes avec les mêmes tables et noms de champs).MySQL Variables qui stockent le nom de la base de données
Ce que je voudrais faire est quelque chose comme ceci:
1 SET @TARGET_DATABASE = 'beta'
2 SET @SOURCE_DATABASE = 'sandbox';
3
4 CREATE DATABASE IF NOT EXISTS @TARGET_DATABASE;
5 USE @TARGET_DATABASE;
...
10 INSERT INTO `tableFoo` SELECT * FROM @SOURCE_DATABASE.`tableFoo`;
Sur la ligne 10, je reçois une erreur (je ne suis pas surpris): « ligne de script: 10 Vous avez une erreur dans votre syntaxe SQL , consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de « @SOURCE_DATABASE tableFoo
. » à la ligne ... »
J'ai donc essayé cette insted pour la ligne 10:
10 SET @TABLE=CONCAT('`',@SOURCE_DATABASE,'`','.`tableFoo`');
11 INSERT INTO `tableFoo` SELECT * FROM @TABLE;
... et à nouveau erreur "Ligne de script: 11 Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de '@TABLE' à la ligne ... "Comme vous pouvez le voir, la ligne 10 fonctionne bien ...
Y at-il un moyen de se référer à une table dans une base de données avec une variable
//
Je ne l'ai pas encore testé votre solution que j'avais pour aller de l'avant et le résoudre de la même façon que je l'ai fait jusqu'à présent, je reviens quand je l'ai testé. –