Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di zakros
    Registrato dal
    Oct 2000
    Messaggi
    509

    [mysql] overflow numerico

    Ciao a tutti,
    volevo sapere che succede quando un campo di myslq x esempio un index auto_increment supera il massimo valore consentito: si riparte da 1 come se nulla fosse o mysql da qualche errore?

    Grazie.

  2. #2

    Re: [mysql] overflow numerico

    [supersaibal]Originariamente inviato da zakros
    Ciao a tutti,
    volevo sapere che succede quando un campo di myslq x esempio un index auto_increment supera il massimo valore consentito: si riparte da 1 come se nulla fosse o mysql da qualche errore?

    Grazie. [/supersaibal]
    continua imperterrito la sua corsa.... pero' se il valore era un tinyint unsigned che ha un solo byte, valore da 0 a 255 cioe' da 0000 0000 a 1111 1111 , aggiungendo il successivo valore diventera' 1 0000 0000 cioe' zero. Appena trovera' un valore corrispondente gia' immesso riceverai errore per valore gia' presente e non potrai piu inserire record.

    metti l'id INT e unsigned e dimenticati del problema.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it L'avatar di zakros
    Registrato dal
    Oct 2000
    Messaggi
    509
    Grazie,
    il dubbio mi è venuto vedendo un id int (non UNSIGNED) di una chat che fa un inserimento x ogni riga di chat, in pochi giorni si è già a 30000 come valore id.
    Però che tu mi dica che da errore solo se trova un valore corrispondente scioglie il dubbio visto che dopo un tot di minuti viene cancellata la riga sul db.

    Ciao

  4. #4
    [supersaibal]Originariamente inviato da zakros
    Grazie,
    il dubbio mi è venuto vedendo un id int (non UNSIGNED) di una chat che fa un inserimento x ogni riga di chat, in pochi giorni si è già a 30000 come valore id.
    Però che tu mi dica che da errore solo se trova un valore corrispondente scioglie il dubbio visto che dopo un tot di minuti viene cancellata la riga sul db.

    Ciao [/supersaibal]
    Anche a 10000 al giorno prima di arrivare ai 2 miliardicentoquarantasettemilioni e il resto mancia che puo mettere un INT (4 BYTE) .. credo che ci vorranno diverse (tante) generazioni.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it L'avatar di zakros
    Registrato dal
    Oct 2000
    Messaggi
    509
    Certo, superare in breve tempo un int(11) nn è realistico, ma la mia era una domanda teorica, appena ho tempo cmq farò una prova con un tinyint.

    Ciao

  6. #6
    Utente di HTML.it L'avatar di JHammer
    Registrato dal
    Sep 2004
    Messaggi
    754
    Secondo me il problema non si pone nel senso che con un signed
    superato il valore max positivo questo si resetta a un valore negativo (dipende dalla codifica comunque certamente ca2).
    Se è un tuo problema avere un id negativo non lo è neanche per mysql!

    Un tuo problema potrebbe esserlo se volessi riordinare gli id 'facendo finta' che l'id rappresenti un'indice 'cronologico' anzichè una semplice chiave univoca.

    Semmai se 'frammenti' lo spazio per gli id disponibili, come diceva piero.mac, rischi di non poter inserire un id perchè già presente...metti allora un ciclo in modo da forzare l'inserimento nel caso questo avvenga...ma visto che si può sempre intervenire in futuro non me ne preoccupererei (beh poi dipende dall'importanza dei dati...al limite perdi qualche riga di chat )

  7. #7
    Utente di HTML.it L'avatar di zakros
    Registrato dal
    Oct 2000
    Messaggi
    509
    [supersaibal]Originariamente inviato da JHammer
    Secondo me il problema non si pone nel senso che con un signed
    superato il valore max positivo questo si resetta a un valore negativo (dipende dalla codifica comunque certamente ca2).
    Se è un tuo problema avere un id negativo non lo è neanche per mysql!

    Un tuo problema potrebbe esserlo se volessi riordinare gli id 'facendo finta' che l'id rappresenti un'indice 'cronologico' anzichè una semplice chiave univoca.

    Semmai se 'frammenti' lo spazio per gli id disponibili, come diceva piero.mac, rischi di non poter inserire un id perchè già presente...metti allora un ciclo in modo da forzare l'inserimento nel caso questo avvenga...ma visto che si può sempre intervenire in futuro non me ne preoccupererei (beh poi dipende dall'importanza dei dati...al limite perdi qualche riga di chat ) [/supersaibal]
    Il problema di usare un id nn disponibile nn si pone perche le righe di chat e quindi anche gli id relativi hanno una vita di 30 minuti poi vengono cancellate.

    ciao

  8. #8
    Utente di HTML.it L'avatar di JHammer
    Registrato dal
    Sep 2004
    Messaggi
    754
    Se contemporaneamente all'aumento dell'id tu gli 'fai strada' all'inizio liberando elementi ok.
    Non userei però un signed come 'criterio cronologico'...usa come chiave di ricerca un timestamp.


  9. #9
    [supersaibal]Originariamente inviato da JHammer
    Se contemporaneamente all'aumento dell'id tu gli 'fai strada' all'inizio liberando elementi ok.
    Non userei però un signed come 'criterio cronologico'...usa come chiave di ricerca un timestamp.

    [/supersaibal]
    Autoincrement incrementa sempre e non sara' mai negativo. Unsigned raddoppia la numerazione disponibile perche' il bit piu' significativo passa da bit di segno a bit di valore. Quindi questo bit verra' usato oppure no come valore, ma mai sara' negativo se il valore immesso e' positivo.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Utente di HTML.it L'avatar di JHammer
    Registrato dal
    Sep 2004
    Messaggi
    754
    Posso fidarmi sulla parola perchè non ho mai provato che succede se un id signed venisse incrementato oltre il limite 'massimo'...
    Cioè se ho un id signed da 255 valori che succede se richiedo l'inserimento quando id = 127 (o 128 non mi ricordo...comunque la codifica è certamente ca2 non ms) ?
    Soprattutto...l'effetto di questa operazione è comune a tutte le implementazioni di mysql ?

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.