Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di *Ray*
    Registrato dal
    Oct 2000
    Messaggi
    495

    SQL: possibile sapere quando lo schema del DB e' stato modificato?

    Per le solite necessita' che non sto a spiegare avrei 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

  2. #2
    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

  3. #3
    Utente di HTML.it L'avatar di *Ray*
    Registrato dal
    Oct 2000
    Messaggi
    495
    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.

  4. #4
    Se lo trovi posta
    per favore NIENTE PVT TECNICI da sconosciuti

  5. #5
    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 ^^)

  6. #6
    Utente di HTML.it L'avatar di *Ray*
    Registrato dal
    Oct 2000
    Messaggi
    495
    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.

  7. #7
    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 secondo cmq ti devi preoccupare + della procedura che devi eseguire che altro ^^

  8. #8
    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

  9. #9
    Utente di HTML.it L'avatar di *Ray*
    Registrato dal
    Oct 2000
    Messaggi
    495
    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 ?

  10. #10
    Utente di HTML.it L'avatar di *Ray*
    Registrato dal
    Oct 2000
    Messaggi
    495
    Non avevo refreshato la pagina negli ultimi 5 minuti, sorry.

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.