Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407

    Backup tramite ASP di DB MySQL

    Ciao a tutti.

    Ho letto quest'articolo, credits Roberto Caccianini:

    http://database.html.it/articoli/leg...un-db-mysql/1/

    Ho realizzato le pagine asp come da esempi, lo script funziona correttamente ma quando il backup è già stato eseguito restituisce:

    Microsoft OLE DB Provider for ODBC Drivers error '80004005'

    [MySQL][ODBC 3.51 Driver][mysqld-5.0.45-community-nt]File 'D:\Inetpub\wwwroot\bk_mysql\accessi.sql' already exists

    sulla linea:

    objConn.Execute (strInFile)

    Dovrei sovrascrivere ciò che già esiste, ma come faccio? :master:

    Grazie!

  2. #2
    elimini il bkup precedente, o se lo vuoi tenere lo crei con nome e data del giorno che lo crei
    ...Se avanzo seguitemi... Se indietreggio uccidetemi...
    BiteFight... arruolati con me e non te ne pentirai

  3. #3
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407
    Originariamente inviato da soundforgers
    elimini il bkup precedente, o se lo vuoi tenere lo crei con nome e data del giorno che lo crei
    Non credo sia possibile, in quanto il codice non mi sembra che permetta modifiche alle tabelle eseguite dal bk:

    codice:
    <%
    server.ScriptTimeout = 300 '5 minuti 
    inizioTempo = Timer()
    
    'Recupero il nome del database
    db_backup = "db"
    
    'Cartella con i permessi di scrittura
    folder_file = ("bk_mysql")
    
    'Path assoluto
    path_translated = Request.ServerVariables("path_translated")
    pos_path = instrrev(path_translated,"\")
    path = left(path_translated, pos_path)
    
    'Path per la scrittura dei file .sql e .txt
    write_path = path & folder_file &"\"
    
    'Path corretto per essere usato direttamente nella query sql
    write_path = replace(write_path,"\","\\")
    
    call dbConnect(objConn, db_backup)
    
    response.write ("<html>")
    response.write ("<title>Backup</title>")
    response.write ("<body style=""font-family:verdana;font:12px;"">")
    
    'Scorro le tabelle
    Set Rs = Server.CreateObject("ADODB.Recordset")
    strTables = "SHOW TABLES;" 'Query standard di MySQL
    Rs.Open strTables, objConn
    if not rs.EOF then
    
    create_tables = ""
    Response.Write ("Script per la creazione e il backup delle tabelle
    ")
    
    do while not(rs.eof)
    
    '+----------------------------+
    '|- SCRIPT CREAZIONE TABELLE -|
    '+----------------------------+
    
    Set Rs2 = Server.CreateObject("ADODB.Recordset")
    strShowCreateTables = "SHOW CREATE TABLE "& rs(0) &";" 'Query standard di MySQL
    Rs2.Open strShowCreateTables, objConn
    if not Rs2.EOF then
    'Creo il contenuto del file .txt con le istruzioni per la creazione
    'delle tabelle del database di restore
    if create_tables = "" then
    create_tables = Rs2(1) &";"& VbCrLf & VbCrLf
    else
    create_tables = create_tables & Rs2(1) &";"& VbCrLf & VbCrLf
    end if
    
    'Visualizzo l'esito degli script di creazione tabelle
    Response.Write ("Tabella '"& Rs(0) &"': script di creazione eseguito!
    ")
    end if 
    Rs2.Close
    set Rs2=nothing
    
    '+-----------------------+
    '|--- BACKUP TABELLE ----|
    '+-----------------------+
    
    'Effettuo il backup, tabella per tabella, in file .sql separati
    'il cui nome prende spunto dal nome della tabella
    strInFile = ""
    strInFile = strInFile &"SELECT * INTO OUTFILE '"& write_path & rs(0) &".sql' "
    strInFile = strInFile &"FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '""' "
    strInFile = strInFile &"LINES TERMINATED BY '\n'"
    strInFile = strInFile &"FROM "& rs(0) &";" 'Query standard di MySQL
    objConn.Execute (strInFile)
    
    'Visualizzo l'esito degli script di backup delle tabelle
    Response.Write ("Tabella '"& Rs(0) &"': backup eseguito!
    
    ")
    
    rs.movenext
    loop
    end if
    rs.close
    set rs = nothing
    
    'Inserisco in un file .txt gli script di creazione delle tabelle (vuote)
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set MyFile = fso.CreateTextFile(server.MapPath("/cat/template/public/bk_mysql/crea_tabelle.txt"), true)
    MyFile.Write (create_tables)
    MyFile.Close
    Set MyFile = nothing
    
    response.Write ("
    
    Elenco dei file di backup creati per ogni tabella (a puro titolo informativo)")
    response.Write ("
    "& ShowFolderList(folder_file))
    
    response.write ("
    Tempo di esecuzione: "& (timer() - inizioTempo)) &" secondi."
    
    response.write ("</body>")
    response.write ("</html>")
    call dbDisconnect(objConn, db_backup)
    
    'FUNCTION
    'Visualizzazione file in una cartella e link al file stesso
    Function ShowFolderList(folderspec)
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.GetFolder(server.MapPath(folderspec))
    Set fc = f.Files
    cont = 1
    For Each f1 in fc
    if right(f1.name, 3) = "sql" then
    s = s & right("00"& cont,3) &": "& f1.name &""
    s = s & VbTab & f1.size/1000000 & " Mb 
    "
    cont = cont + 1
    end if 
    Next
    ShowFolderList = s
    End Function
    
    'SUB
    'Apertura connessione database di backup
    sub dbConnect(objConn, db_backup)
    connectionstring = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;PORT=3306;DATABASE=db;USER=root;PASSWORD=xxx;OPTION=3;"
    set objConn = server.createObject("ADODB.Connection")
    objConn.Open connectionstring
    end sub
    
    'Chiusura connessione database di backup
    sub dbDisconnect(objConn, db_backup)
    objConn.close
    set objConn = nothing
    end sub
    %>

  4. #4
    Guarda non mi sono cimentato a fondo sul tuo codice perchè purtroppo se non lo faccio io il codice non ci capisco niente...
    Scusa l'ignoranza ma non ne puoi creare uno nuovo con la data del giorno in cui lo crei?
    Se non hai problemi di spazio non penso che sarebbe brutta cosa
    ...Se avanzo seguitemi... Se indietreggio uccidetemi...
    BiteFight... arruolati con me e non te ne pentirai

  5. #5
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407
    Originariamente inviato da soundforgers
    Guarda non mi sono cimentato a fondo sul tuo codice perchè purtroppo se non lo faccio io il codice non ci capisco niente...
    Scusa l'ignoranza ma non ne puoi creare uno nuovo con la data del giorno in cui lo crei?
    Se non hai problemi di spazio non penso che sarebbe brutta cosa
    Si ma come?
    Se il nome della cartella in cui si esegue il backup è fisso ?

  6. #6
    non puoi creare delle sottocartelle e metterlo li dentro?
    ...Se avanzo seguitemi... Se indietreggio uccidetemi...
    BiteFight... arruolati con me e non te ne pentirai

  7. #7
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407
    ok.

    Ho risolto utilizzando l'oggetto FSO e gli faccio creare una cartella con la data di oggi dove vengono ricopiate le tbl mysql.

    Grazie.

  8. #8
    de nada ciaoo
    ...Se avanzo seguitemi... Se indietreggio uccidetemi...
    BiteFight... arruolati con me e non te ne pentirai

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.