Per le solite necessita' che non sto a spiegareavrei bisogno di sapere se c'e' un modo per sapere a quando risale l'ultima modifica allo schema del database.
Esiste qualcosa del genere ?
Intanto inizio a scavare in mysql.com
Per le solite necessita' che non sto a spiegareavrei bisogno di sapere se c'e' un modo per sapere a quando risale l'ultima modifica allo schema del database.
Esiste qualcosa del genere ?
Intanto inizio a scavare in mysql.com
Ciao,
un modo è usare SHOW_TABLE_STATUS
http://dev.mysql.com/doc/mysql/en/SH...LE_STATUS.html
forse ce ne sono altri ma non li conosco
per favore NIENTE PVT TECNICI da sconosciuti
Ho provato subito, ma putroppo non mi da i dati che mi servono, per due motivi.
I dati che fornisce sono il creation date/time e il last modified date/time. Apparentemente prende i dati dal filesystem, infatti putroppo una insert o una update modificano il last modified time.
Inoltre, e questo e' ancora peggio, i due dati in questione sono NULL per le tabelle INNODB
Ora provo a vedere se c'e' un altro modo, ma temo di dovere perdere la speranza.
Se lo trovi posta![]()
per favore NIENTE PVT TECNICI da sconosciuti
potresti farti tu un sistema
non credo che realmente esista questa possibilità
altrimenti, riflettendoci, potresti tarpare le ali al permesso ALTER cosi blocchi a priori le modifiche
cmq, un sistema, potrebbe essere fare un md5 sul contenuto di
show create table e salvare in una tabella l'elenco dei vari MD5
se varia l'sql per la creazione della tabella ovviamente è stata modificata
tu metti l'md5 e la data e fai si che a questa tabella l'utente normale non può accedere e accedi in altro modo cosi eviti che questa tabella venga modificata da chi non deve
http://dev.mysql.com/doc/mysql/en/SH...ATE_TABLE.html
oppure ancora...mysql ha 3 file...uno è il DB, l'altro gli indici e l'ultimo, CREDO, la struttura del DB, il FRM, credo (e ripeto credo, quindi accertati)
se è cosi puoi controllare tu la data dell'ultima modifica, li non varia nulla se non viene modificato lo schema
(ovviamente se sei con l'inno db non se po fa ^^)
VM su SSD da 5$! https://www.digitalocean.com/?refcode=f6925c7f0ddb
L'idea dell'MD5 e' ottima!
La mia necessita' e' molto limitata in realta': ho bisogno che ogni qualvolta il database viene modificato, parta una procedura UNA TANTUM.
Le modifiche al database verranno fatte comunque raramente ma non voglio dovere fare questa cosa a mano. Non mi serve bloccare l'alter table, ho solo bisogno di tirare fuori alcuni dati staticamente una volta per ogni modifica del database.
Se quindi io faccio un dump della sola struttura del database, e ne faccio un checksum di qualunque tipo (il piu' possibile veloce), poi posso controllare cosi' se la struttura e' stata modificata.
Fantastico!
E' una soluzione decisamente lenta putroppo, pero', quindi la dovro' usare con estrema parsimonia.
Quanto potra' impiegare la creazione del dump del solo schema? Per come son messo temo dovro' obbligare a farlo ad ogni tentativo di login.. non e' il massimo.![]()
usare lo show create table?
meno di un centesimo di secondo (poi non so se si arriva ad anche meno)
quindi puoi stare tranquillo e una semplicissma query che mysql costruisce dalle info che ha in memoria dato che leggendo la tabella mysql mette in memoria delle informazioni quindi ci sta praticamente zero
(mysqlfront mi dice 0,00 quindi siamo sotto il centesimo, ma secondo me anche sotto il millesimo)
PS: puoi farlo con tranquillità ogni login del resto il tempo di esecuzione è veramente basso, ed inoltre il login mica si fa ogni frazione di secondocmq ti devi preoccupare + della procedura che devi eseguire che altro ^^
VM su SSD da 5$! https://www.digitalocean.com/?refcode=f6925c7f0ddb
puoi fare qualcosa del genere
- SHOW TABLES, che ti estrae l'elenco delle tabelle
- un while che ti lancia lo SHOW CREATE TABLE e dal risultato ti estrae la lista delle tabelle e nello stesso while ti controlla ed updata il tutto
se hai un tot di tabelle specifiche e nn ti serve su tutte puoi saltare lo show tables creando un'array che cicli con
while(list(, $tbl_name) = each($array)) {...}
e quindi risparmi pure li
VM su SSD da 5$! https://www.digitalocean.com/?refcode=f6925c7f0ddb
Hmm speravo ci fosse una funzione unica per visualizzare lo schema dell'intero database, ma guardando sul manuale sembra invece che io sia costretto a fare:
SHOW TABLES
e per ogni riga fare
SHOW CREATE TABLE {nometabella}
Confermi daniele?
Non avevo refreshato la pagina negli ultimi 5 minuti, sorry.