Moment de l'exécution.getRuntime().exec()
Je ne peux pas lire un fichier seulement lorsque le nom de base de données contient comme (nouvelle base de données (myid) etc.
Je donne un exemple de code suivant:
dumpCommand = "C:/Program Files/MySQL/MySQL Server 5.0/bin/mysqldump -h"+hostName+user+databaseName;
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(dumpCommand);
InputStream in = proc.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(in));
String line =null;
while((line=br.readLine())!=null)
{
//able to read line only when database name like abc,datastore etc...
System.out.println(line);
}
Suppose que mon nom de base de données de la mo signifie quand j'ai l'impression de ligne j'ai eu de la base de données de nom comme de uniquement.
Est possible lorsque le nom de base de données avec l'espace vide?
OriginalL'auteur JohnRaja | 2010-01-27
Vous devez vous connecter pour publier un commentaire.
Êtes-vous familier avec le
exec
guillemets bug? (pourRuntime.exec
ouProcessBuilder
)Vous pouvez essayer:
Juste assurez-vous qu'aucun de vos paramètres, vous devrez passer contient des guillemets doubles (alors que pas début avec les guillemets)
(voir bug 6511002)
Tous les paramètres, comme:
serait changé en interne (par le
getRuntime()
mise en œuvre) dansSi c'est le cas, vous avez besoin pour marquer l'argument:
OriginalL'auteur VonC
Le chemin d'accès du fichier contient des espaces, qui peuvent être (l'une des) problème(s). Essayez plutôt ceci:
et suivez phisch de suggstion pour imprimer le
dumpCommand
Chaîne pour vérifier qu'elle est valide mysqldump appelOriginalL'auteur Andreas_D
Java et les OS ont besoin de savoir quelle est la commande et quels sont les arguments. Donc:
1) Vous pouvez essayer d'utiliser
exec(String, String[])
à fournir à la commande et les arguments par des2) Vous pouvez placer la commande mysqldump et chaque argument dans des guillemets doubles pour le système d'exploitation de connaître leur unique des choses.
Si vous utilisez le (1) option mysqldump programme recevrez un argument d'un élément dans le tableau, peu importe les espaces ou quoi que ce soit.
OriginalL'auteur helios
Je ne suis pas sûr si je comprends votre question, mais votre dumpCommand semble concat toutes les Variables (nom d'hôte, nom d'utilisateur, databaseName) à une grande chaîne.
Faire un Système..println(dumpCommand); et voir si c'est ce que vous avez vraiment envie de s'exécuter.
Vous êtes probablement manque quelques places ici.
Si le "-" est lui-même un problème, vous pourriez vouloir s'en échapper, sinon la commande mysqldump pense que c'est un paramètre.
OriginalL'auteur phisch
Il semble mysqldump la syntaxe est un peu différente. Ci-dessous mon exemple
mysqldump-h mysserver -u root -p my_db -R > create_db.sql
Je pense que vous devriez utiliser "" ou ` complexes (les noms n'ont pas vérifié moi-même).
OriginalL'auteur burnall