Java - Problema con mysqldump

 
Vista:

Problema con mysqldump

Publicado por Luis (83 intervenciones) el 10/01/2010 23:46:05
Buenas tengo un problema con mysql dump

Tengo este metodo para hacer respaldos de la base de datos

public RespaldarBD(String nombre, String ubicacion) {

String usuario = "root";
String password = "";
String dbName = "baseDatos";
String ruta = ubicacion+"\\";
ruta +=nombre;
Runtime rt = Runtime.getRuntime();
try {
// String command = "/opt/lampp/bin/mysqldump --opt -c -u"+usuario+" -p"+password+" "+dbName+" -r /home/luis/backup.sql";
String command = "C:\\Program Files\\MySQL\\MySQL Server 5.4\\bin\\mysqldump --opt -c -u"+usuario+" -p"+password+" "+dbName+" -r "+ruta+".sql";
System.out.print(command);
rt.exec(command);
} catch (IOException ex) {
ex.printStackTrace();
}
}

El problema es que en linux lo hago de esta manera y funciona perfecto.
// String command = "/opt/lampp/bin/mysqldump --opt -c -u"+usuario+" -p"+password+" "+dbName+" -r /home/luis/backup.sql";

Lo que sucede es que no me gusta programar en windows puesto que netbeans en windows es muy pesado pero necesito que funcione en windows. Yo no cambio por nada la velocidad en que linux realiza las tareas pero como ya dije necesito q funcione en windows.

Pero cuando trato de hacerlo en windows y le paso la ruta donde esta mysqldump no logro q me funcione.

No se si sera que tengo un error en la forma como coloco la ruta o si sera que el servidor mysql no esta funcionando bien.

Algo me gustaria saber es si alguien sabe como crear una variable de sistema operativo creo q se llama path para no tener que estar pasandole la ruta donde esta ubicado el mysqldump o cualquier otro programa q necesite.

Saludos y de antemano gracias al que me pueda ayudar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema con mysqldump

Publicado por axel (7 intervenciones) el 11/01/2010 09:57:46
Has probado a buscar "path" o "configurar path" sobre lady4j? tardaras menos que preguntando en el foro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con mysqldump

Publicado por Luis (83 intervenciones) el 11/01/2010 16:49:46
Hola axel gracias por tu respuesta pero creeme que ya lo habia intentado antes de preguntar en el foro y el path no es mi mayor problema.

Lo que sucede es que cuando se ejecuta se ejecuta la sentecia del mysqldump se y queda el proceso abierto, es decir, yo abro el administrador de tareas y siempre queda el proceso del mysqldump activo.

Intente con el servidor de mysql y no me funciono lo elimine y probe con el servidor mysql que instala el wamp y sucede lo mismo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con mysqldump

Publicado por Luis (83 intervenciones) el 11/01/2010 20:25:32
Probe con con el servidor que trae el xampp y tampoco sirve se que estancado el proceso igual.

Ya no se me ocurre que mas hacer si alguien sabe como hacer un respaldo en java (no importa que no sea con mysqldump) seria de gran ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con mysqldump

Publicado por Luis (83 intervenciones) el 13/01/2010 20:58:02
Yo estoy tratando de hacer esto en Windows 7 y instale windows xp en otra particion configure todo y tampoco funciona. Hasta lo hice en otra maquina con xq y tampoco funciono.

Nadie que me pueda ayudar?
Nadie a respaldado una base de datos mysql?

Me urge solucionar esto y no consigo nada por ningun lado.

Ya no creo que sea el sistema operativo, ni el servidor. Siempre he pensado que eso es lo ultimo que hay que pensar que falla, pero si el codigo funciona en linux no entiendo porque no puede funcionar en windows.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con mysqldump

Publicado por Luis (83 intervenciones) el 14/01/2010 02:47:28
Descubri que el problema esta es el código java. Porque ejecute la sentencia mysqldump en ms-dos y hace el respaldo.

Ahora a buscar donde esta el error en el código java.

Cualquier cantidad de tiempo perdido porque pense que el código no era el que fallaba puesto que funciona en linux.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con mysqldump

Publicado por Luis (83 intervenciones) el 14/01/2010 03:48:17
Consegui este codigo que valida en que sistema operativo te encuentras.
Ejecuta una sentencia en ms-dos ipconfig y muestra en la consola la salida correctamente.

Le coloque la misma sentencia mysqldum que haga directo en ms-dos y tampoco funciona da el mismo problema.

Cree una carpeta y le di la mayor cantidad de privilegios posibles y nada que funciona.

Creo que estoy a punto de darme por vencido.

public static void main(String args[]) {

String s = null;

try {

// Determinar en qué SO estamos
String so = System.getProperty("os.name");

String comando;

// Comando para Linux
if (so.equals("Linux"))
comando = "ifconfig";

// Comando para Windows
else
comando = "cmd /c ipconfig";

// Ejcutamos el comando
Process p = Runtime.getRuntime().exec(comando);

BufferedReader stdInput = new BufferedReader(new InputStreamReader(
p.getInputStream()));

BufferedReader stdError = new BufferedReader(new InputStreamReader(
p.getErrorStream()));

// Leemos la salida del comando
System.out.println("Ésta es la salida standard del comando:\n");
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}

// Leemos los errores si los hubiera
System.out
.println("Ésta es la salida standard de error del comando (si la hay):\n");
while ((s = stdError.readLine()) != null) {
System.out.println(s);
}

System.exit(0);
} catch (IOException e) {
System.out.println("Excepción: ");
e.printStackTrace();
System.exit(-1);
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con mysqldump

Publicado por Luis (83 intervenciones) el 14/01/2010 17:41:13
Ahora por fin soluciones el problema.

El problema era que se quedaba trabado el proceso esperando una contraseña de administrador de la base de datos, lo que no sucede en linux. Perdi cualquier cantidad de tiempo en esa tonteria.

Aqui dejo el método ya probado por si alguien lo necesita.

Y si utilizan el método que coloque anteriormente pueden mantener la portabilidad entre sistemas operativos.

public RespaldarBD(String nombre, String ubicacion) {

String usuario = "admin";
String password = "admin";
String dbName = "baseDatos";
String ruta = ubicacion+"\\";
ruta +=nombre;
Runtime rt = Runtime.getRuntime();
try {
// String command = "/opt/lampp/bin/mysqldump --opt -c -u"+usuario+" -p"+password+" "+dbName+" -r /home/luis/backup.sql";
String command = "C:\\Program Files\\MySQL\\MySQL Server 5.4\\bin\\mysqldump --opt -c -u"+usuario+" -p"+password+" "+dbName+" -r "+ruta+".sql";
System.out.print(command);
rt.exec(command);
} catch (IOException ex) {
ex.printStackTrace();
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con mysqldump

Publicado por anacarmar (1 intervención) el 08/05/2010 22:58:04
ola gracias por el aporte, pero tengo una duda, como indicas el nombre y la ubicacion, es decir el nombre que extension debe tener y la ubicacion si es en C: yy otra cosa, yo tengo un codigo similar al tuyo pero me crea un archivo txt con extension .sql, cuando lo abro no tiene nada dentro me poedes colaborar? gracias :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con mysqldump

Publicado por Luis (83 intervenciones) el 09/05/2010 01:50:43
Este es el codigo que use en es momento para generar el respaldo.

String usuario = "admin";
String password = "admin";
String dbName = "nomina";
String ruta = ubicacion+"\\"; //Este codigo esta dentro de una funcion y ella recibe como parametro a ubicacion el cual obtendo de un chooser (ventana de seleccion de archivos similar a la de windows), que la utilizo para que el usuario seleccione la ruta donde desea guardar el archivo.
ruta +=nombre;
Runtime rt = Runtime.getRuntime();
try {
String command = "mysqldump --opt -c -u"+usuario+" -p"+password+" "+dbName+" -r "+ruta+".sql";
rt.exec(command);
} catch (IOException ex) {
ex.printStackTrace();
}

A mi me paso mucho eso, de que cuando abres el archivos no contiene nada. El problema era que si no le colocas una clave a la base de datos en windows (el linux funciona sin ponerle clave) se queda pegado el proceso (en el administrador de tareas de windows lo puedes probars, el proceso si mal no recuerdo se llama igual myslqdump), y hay q finalizarlo manualmente.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Problema con mysqldump

Publicado por dimates (1 intervención) el 08/06/2012 07:29:05
Amigo me la he pasado buscando solucion al tema por el problema que planteas,
hable con forojava y no pudieron, con un personaje de filipinas y 3 dias y tampoco.
gracias por este aporte 10 puntos..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con mysqldump

Publicado por YR (2 intervenciones) el 10/07/2015 01:14:23
Tengo el mismo error a la hora de generar mi clase de respaldo este es mi código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
public class principal extends javax.swing.JFrame {
JFileChooser chooser=new JFileChooser();
    /** Creates new form principal */
    public principal() {
        initComponents();
        LlenarCombo();}
//metodo para   
private void LlenarCombo(){
     Connection cn;
     PreparedStatement ps;
     ResultSet rs;
     try{
         Class.forName("com.mysql.jdbc.Driver");
         cn=DriverManager.getConnection("jdbc:mysql://localhost/","root","");
         ps=cn.prepareStatement("show databases");
         rs=ps.executeQuery();
         while(rs.next()){
             this.jComboBox1.addItem(rs.getObject(1));
         }
     } catch (Exception e){
         JOptionPane.showMessageDialog(null, e.getMessage());
     }
}
    private void crearBackUp(String dataBase){
    int resp;
        Calendar c=Calendar.getInstance();
        String fecha=String.valueOf(c.get(Calendar.DATE));
        fecha=fecha+"-"+String.valueOf(c.get(Calendar.MONTH));
      fecha=fecha+"-"+String.valueOf(c.get(Calendar.YEAR));
 
        resp=chooser.showSaveDialog(this);//JFileChooser de nombre RealizarBackupMySQL
        if (resp==JFileChooser.APPROVE_OPTION) {//Si el usuario presiona aceptar; se genera el Backup
            try{
                Runtime runtime = Runtime.getRuntime();
                File backupFile = new File(String.valueOf(chooser.getSelectedFile().toString())
                        +"_"+fecha+".sql");
                FileWriter fw = new FileWriter(backupFile);
                Process child = runtime.exec(System.getProperty("user.dir")+
                        "\\mysqldump --opt --password= --user=root "
                        + "--databases"+dataBase+" -R");
                InputStreamReader irs = new InputStreamReader(child.getInputStream());
                BufferedReader br = new BufferedReader(irs);
 
                String line;
                while( (line=br.readLine()) != null ) {
                    fw.write(line + "\n");
                }
                fw.close();
                irs.close();
                br.close();
 
 
            }catch(Exception e){
                JOptionPane.showMessageDialog(null, "Error no se genero el archivo por el siguiente motivo:"+e.getMessage(), "Verificar",JOptionPane.ERROR_MESSAGE);
            }
            JOptionPane.showMessageDialog(null, "Archivogenerado","Verificar",JOptionPane.INFORMATION_MESSAGE);
        } else if (resp==JFileChooser.CANCEL_OPTION) {
            JOptionPane.showMessageDialog(null,"Ha sido cancelada la generacion del Backup");
        }
    }

y a la hora de guardar el respaldo me dice: cannot run program y la ruta de donde lo quiero guardar.
Tengo mis bases de datos en Wampserver y la ruta que pongo es donde se guardan en mi disco C. y el repaldo se me genera pero en blanco
Agradeceria me dijeran cual es mi error.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con mysqldump

Publicado por Luis Oswaldo Monagas (83 intervenciones) el 10/07/2015 03:47:30
Buenas amigo,

A mi me paso eso, y como indico en los post anteriores era un tema con la clave de la base de datos, yo empece a hacer las pruebas y mi base local no tenia clave, le coloque la clave a la base de datos y problema resuelto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con mysqldump

Publicado por yaha (2 intervenciones) el 10/07/2015 23:01:16
Eso hice y me aparece el archivo generado pero en blanco
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar