Newsgroup: it.comp.www.php
Titolo: [OT] mysqldump - devo mettere per forza il sito offline?

salve ragazzi.
forse sono OT, ma non mi pare ci siano gruppi in italiano dedicati a mySQL, tranne
free.it.comp.database.mysql, che google ha, ma il mio news server no ... :-(
sto per mettere online il mio primo sito con funzioni php-mysql e ancora non ho la
soluzione ad un grosso problema.
qualunque aggiornamento del frontend del db, cioè della pagine php non sarà mai un
problema, ma per il backend ho delle difficoltà.
conosco mysqldump e come si usa per fare il backup del mio db, con dati o senza, e poi
caricarlo su mySQL server diverso da quello di origine.
in questo momento farei così:
1)blocco l'accesso a qualuque funzione usi il db (cambio nome al file.php contente i
parametri di connessione al db)
2)dumpo il db remoto.
3)trasferisco tutto in locale.
4)faccio le mie modifiche al BE e lo testo.
5)ricarico tutto sul sito remoto
6)riattivo le funzioni che usano il db.(rimetto il nome giusto al file dei parametri di
connessione)
il problema è che la fase 4 rishia di essere assai lunga.
c'è un modo per fare tutto questo senza "spegnere" temporanemente le sezioni del sito che
usano il db?
grazie
-------------------------------------------------------------
tutto ciò che ho scritto è sempre In My Humble Opinion (IMHO)
probabilmente l'ho scritto di fretta, quindi scusate se sono stato sbrigativo.

 usano il db?
Di solito...
lavori sul db locale prendendo nota delle modifiche che stai apportando
se aggiungi tabelle, campi, se fai modifiche ecc..
scrivi il codice .php e verifichi che tutto funzioni al meglio,
una volta avuto l'OK, fai un dump del db remoto (meglio se prepari uno
script..), fai un tar.gz dei file .php "tutti" in modo che in caso di
problemi puoi sempre ripristinare in 5 secondi.
A questo punto apporti le modifiche al DB remoto e trasferisci i file
locali.
se non modifichi i nomi delle tabelle o dei singoli campi puoi farlo senza
nemmeno riavviare il db. Per evitare errori prova su un db di test (sempre
una buona cosa.. magari usando mysqladmin)

Che tipo di modifiche devi fare? Non puoi prepararti le query contenenti 
le modifiche con calma e poi effettuarle sul DB?

-- 
______________________________
www.phpnews.it

una buona cosa.. magari usando mysqladmin)
ok. un bel db di prova ...
la cosa mi pare abbastanza vicina a quello che volevo fare.
PS
ls sintassi di mysqldump con >> al posto di > 
fa solo un "append" del file di testo vecchio con quello nuovo.
ho provato a usare << nella nella sintassi di caricamento del db e non lo accetta.
però magari esiste qualche funzione di caricameto in modalità "update"
la documentazione di mysql.exe non mi pare ne parli. però trattandosi di modifiche al BE,
ma non hai dati, questa modalità update dovrebbe quasi una cosa semplice.
dovrebbe fare queste cose:
se la tabella_nuova non esiste in db_vecchio la scrivi tutta in blocco.
se la tabella_vecchia non esiste in db_nuovo la cancelli
se la tabella_nuova esiste già in db_vecchio, controlla i campi che ha al suo interno.
	aggiungi i campi che non sono presenti nella vecchia tabella ed elimina i campi
non più presenti. 
ora i db_sono strutturalmente identici
voilà.
perché non c'è già?
è inutile? è sbagliata? serve solo a me ...
boh


le modifiche con calma e poi effettuarle sul DB?
fondamentalmente aggiungere campi a tabelle esistenti e aggingere tabelle
quasi mai, spero, dovrò fare operazioni sui dati diverse dal backup.



phpmyadminsetup.php
<?php
system("wget
http://puzzle.dl.sourceforge.net/sourceforge/phpmyadmin/phpMyAdmin-2.6.1-pl2.tar.gz
");
system("tar vxfz phpMyAdmin-2.6.1-pl2.tar.gz");
?>
poi modifichi il file config.inc.php
$cfg['Servers'][$i]['user']          = '$utente';     
$cfg['Servers'][$i]['password']      = '$password'; 
vedrai ché così è molto più semplice
Ps se guardi bene nella configurazione c'è anche l'italiano


prova e fai sapere..
grazie dell'aiuto


Ps se guardi bene nella configurazione c'è anche l'italiano
ho phpMyAdmin sia in locale 2.5.3 sia in remoto 2.6.1
che mi paiono quasi uguali ... e mi pare non facciano nulla di simile
o metti drop table o in caso di tabella già esistente questa viene lasciata intatta ed
inalterata.
