Visualizzazione risultati 1 fino 8 di 8

Discussione: AUTO_INCREMENT non si aggiorna

  1. #1
    Guest

    Predefinito AUTO_INCREMENT non si aggiorna

    Nella tabella wp_comments ho 9 commenti, entro in Operazioni ->AUTO_INCREMENT e c'è scritto 13.
    A questo punto come da prassi inserisco un numero più basso dei 9 commenti che ho dentro e clicco Esegui, dovrebbe apparire il numero 10 come numero comment_ID del prossimo commento che verrà scritto, invece appare ancora 13.
    Come mai?

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,291

    Predefinito

    Poi, Operazioni -> AUTO_INCREMENT diventa 14?

    Non è detto che il numero di commenti coincida con il numero maggiore dell'ID, anzi, spesso non lo è, ad esempio quando elimini un commento.

    A questo punto come da prassi inserisco un numero più basso dei 9 commenti che ho dentro e clicco Esegui
    Quale query esegui precisamente? Forzi un ID inesistente più basso di 13?

    Ciao!

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Poi, Operazioni -> AUTO_INCREMENT diventa 14?

    Non è detto che il numero di commenti coincida con il numero maggiore dell'ID, anzi, spesso non lo è, ad esempio quando elimini un commento.


    Quale query esegui precisamente? Forzi un ID inesistente più basso di 13?

    Ciao!
    Effettivamente avevo eliminato 3 commenti. Ho provato ad inserire un nuovo commento (e con questo sarebbero 10), ma il contatore segna sempre 13.
    Di solito inserendo nella casella AUTO_INCREMENT un numero più basso del numero dei commenti che ci sono, cliccando su Esegui lui si aggiorna.

  4. #4
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Se non dettato da problemi di Out-of-Range and Overflow Handling, il valore massimo 9223372036854775807 (BIGINT UNSIGNED) secondo la mia modesta opinione non va modificato.
    Problemi gestione del cambiamento, essenzialmente se un tuo utente inserisce un commento AUTO_INCREMENT è già cambiato, quindi pensare che la tua modifica non altera il risultato è un errore. Solitamente si inserisce il record e solo dopo si recupera con LAST_INSERT_ID().
    Ecco le specifiche lato MySQL https://dev.mysql.com/doc/refman/8.0...increment.html
    Però c'è da dire che WordPress (CMS scritto da programmatori php attivi, ma per il loro contesto) adotta una propria strategia. (Significa non esiste legge universale che esplica il miglior linguaggio di programmazione o la migliore codifica, ma a limite buona pratica di stesura del codice).
    Ultima modifica di darbula : 14-08-2021 alle ore 16.03.13

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    Se non dettato da problemi di Out-of-Range and Overflow Handling, il valore massimo 9223372036854775807 (BIGINT UNSIGNED) secondo la mia modesta opinione non va modificato.
    Problemi gestione del cambiamento, essenzialmente se un tuo utente inserisce un commento AUTO_INCREMENT è già cambiato, quindi pensare che la tua modifica non altera il risultato è un errore. Solitamente si inserisce il record e solo dopo si recupera con LAST_INSERT_ID().
    Ecco le specifiche lato MySQL https://dev.mysql.com/doc/refman/8.0...increment.html
    Però c'è da dire che WordPress (CMS scritto da programmatori php attivi, ma per il loro contesto) adotta una propria strategia. (Significa non esiste legge universale che esplica il miglior linguaggio di programmazione o la migliore codifica, ma a limite buona pratica di stesura del codice).
    Inserendo un nuovo commento, nella url la parte finale appare #comment-10 quindi giusto, anche se AUTO_INCREMENT continua a segnare 13.

  6. #6
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    phpMyAdmin è un software scritto in php, se recupera AUTO_INCREMENT tramite LAST_INSERT_ID
    L'ID che è stato generato viene mantenuto nel server in base alla connessione. Ciò significa che il valore restituito dalla funzione a un determinato client è il primo AUTO_INCREMENT valore generato per l'istruzione più recente che interessa una AUTO_INCREMENT colonna da quel client. Questo valore non può essere influenzato da altri clienti, anche se generano AUTO_INCREMENT valori propri. Questo comportamento garantisce che ogni client possa recuperare il proprio ID senza preoccuparsi dell'attività di altri client e senza la necessità di blocchi o transazioni.

    Il valore di LAST_INSERT_ID() non viene modificato se si imposta la AUTO_INCREMENT colonna di una riga su un valore non "magico" (ovvero un valore che non è NULL e non 0).
    Qua paragona phpMyAdmin->operazioni con l'istruzione
    Codice:
    ALTER TABLE mytable AUTO_INCREMENT = 500
    , inoltre MyISAM SQL: se vuoi impostare un numero inferiore rispetto al corrente, la modifica è corrente + 1 invece del tuo numero inferiore.
    Per InnoDB SQL: la modifica non cambi
    https://electrictoolbox.com/reset-au...t-value-mysql/
    Nb* Non ho verificato nel codice sorgente di phpMyAdmin (quindi non so se la risposta è un falso positivo).

    Mentre quando usi WordPres stai utilizzando altro client per MySQL.
    Ultima modifica di darbula : 14-08-2021 alle ore 21.14.03

  7. #7
    Guest

    Predefinito

    Sto pensando una cosa: ho fatto il backup del DB quindi dovrebbe averci scritto AUTO_INCREMENT 13 da qualche parte. Non riesco a trovarlo perché potrei provare a modificare da li il numero e poi importo il database aggiornato.

  8. #8
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Perché è così importante, il numero del commento non indica quante righe ci sono nella tabella wp_comments è solo il valore di AUTO_INCREMENT.
    Però per test, esporta un file SQL e poi con la funzione cerca "comment_ID", tieni presente se plugin o tema serializzano i dati questo sarà rotto. Se da 10 a 9 o viceversa nella serilizzazione cambia e quindi rotto.
    Se non avrai altre connessioni attive (nemmeno in altre finestre del browser), (ne phpMyAdmin, ne WordPress) puoi impostare il valore tramite istruzione SQL di SESSIONE MySQL apri phpMyAdmin scegli la tabella, copia l'istruzione SQL e nel riquadro SQL imposta anche questa
    Codice:
    SET @@auto_increment_increment=9;
    Da MySQL 8.0.18 puoi trovarti 10, 19, 28, 37 poiché avrà tale valore AUTO_INCREMENT in php significa usare mysqli_query https://dev.mysql.com/doc/refman/8.0...ment_increment Qui maggiori info.
    Non dovrai creare numeri duplicati.
    Potresti impostare un redirect (su un file normale creato appositamente) nel tuo htaccess in modo tale da impedire l'esecuzione del php.
    Il backup va sempre e comunque fatto.
    Ultima modifica di darbula : 15-08-2021 alle ore 01.25.07

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •