Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    mysql cambiare tipo del campo da varchar a text

    Ciao,

    su un database esistente e popolato, devo aumentare i numero di caratteri registrabili dentro ad un campo di una tabella.

    Ora il campo è VARCHAR.

    Voglio impostarlo a TEXT.


    La tabella è già popolata... domanda: ci sono controindicazioni ?


    grazie mille
    1,2,3,4,5,10,100 passi!

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469

    Re: mysql cambiare tipo del campo da varchar a text

    Originariamente inviato da i_am_antipop
    Ciao,

    su un database esistente e popolato, devo aumentare i numero di caratteri registrabili dentro ad un campo di una tabella.

    Ora il campo è VARCHAR.

    Voglio impostarlo a TEXT.


    La tabella è già popolata... domanda: ci sono controindicazioni ?


    grazie mille
    numerose, soprattutto dal punto di vista delle prestazioni.
    E' un campo payload (ossia che non fa nulla, e viene solo "riportato", come un campo note), oppure viene elaborato (ricerche, scritture )?

  3. #3
    E' solo un campo con delle note.
    Non è oggetto di ricerche.
    Ma viene aggiornato tramite backend.


    Quindi potrebbe non essere problematico modificarne il tipo dati (da vachar a text)?


    PS: ovviamente prima faccio un bkup

    Grazie
    ciao
    1,2,3,4,5,10,100 passi!

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    Originariamente inviato da i_am_antipop
    E' solo un campo con delle note.
    Non è oggetto di ricerche.
    Ma viene aggiornato tramite backend.


    Quindi potrebbe non essere problematico modificarne il tipo dati (da vachar a text)?


    PS: ovviamente prima faccio un bkup

    Grazie
    ciao
    l'unica che mi viene in mente è una codifica UTF8 "occulta" che ti faccia diventare 3 volte più grande lo spazio occupato, e che ti "fotta" i dump ascii.

    ma, giusto per curiosità, perchè vuoi fare questo cambiamento?
    Ricorda che non puoi "impacchettare" caterve di dati in una riga mysql, anzi in generale la dimensione massima del "pacchettone" è 1MB (devi nel caso cambiarlo)

  5. #5
    Originariamente inviato da franzauker
    l'unica che mi viene in mente è una codifica UTF8 "occulta" che ti faccia diventare 3 volte più grande lo spazio occupato, e che ti "fotta" i dump ascii.

    ma, giusto per curiosità, perchè vuoi fare questo cambiamento?
    Ricorda che non puoi "impacchettare" caterve di dati in una riga mysql, anzi in generale la dimensione massima del "pacchettone" è 1MB (devi nel caso cambiarlo)
    E' una richiesta del cliente, vuole poter scrivere 1000 caratteri dentro a quel campo (prima gline bastavano 200).


    Scusa, per "caterve di dati in una riga mysql, anzi in generale la dimensione massima del "pacchettone" è 1MB " intendi un record di una tabella? cioè un record non può superare 1 Mb si spazio?

    grazie ancora
    1,2,3,4,5,10,100 passi!

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    Originariamente inviato da i_am_antipop
    E' una richiesta del cliente, vuole poter scrivere 1000 caratteri dentro a quel campo (prima gline bastavano 200).
    Che problema c'è?
    Mettigliene 1000 e buonanotte
    Scusa, per "caterve di dati in una riga mysql, anzi in generale la dimensione massima del "pacchettone" è 1MB " intendi un record di una tabella? cioè un record non può superare 1 Mb si spazio?

    grazie ancora
    la differenza sostanziale è la memorizzazione di varchar nelle righe (che tipicamente hanno una dimensione massima complessiva di 64k) o "esternamente" (come i blob/text), per i quali solo "il puntatore" è tenuto nella riga.
    Oltre avere una dimensione massima stabilita (varchar),mentre non lo è (per i text).

    Dal punto di vista delle prestazioni, così in generale, i campi text sono 3 o 4 volte più lenti di quelli varchar, ma nel tuo caso non è particolarmente punitivo
    ---
    Esiste però una limitazione nel "pacchettone" che scambia mysql server col client, ossia max_allowed_packet
    Sostanzialmente se questo è impostato (come è normalmente) a 1MB, non puoi "salvare" dentro un BLOB\text più di 1MB di dati, perchè il server ti scarterebbe il "pacchettone".

    In questo caso devi aumentare max_allowed_packet (fino a 1GB); normalmente si fa (nel caso del tutto sbagliato) della volontà di memorizzare file dentro un db mysql, ove è frequentissimo avere file >1MB (perfino la posta elettronica spesso è più grande)
    ---
    Riassumendo, nel tuo caso, visto che l'incremento richiesto è così piccolo da non richiedere una riga più grande di 64K (motivo che ti avrebbe costretto ad usare un TEXT), e tantomeno richiede di aumentare max_allowed_packet, ti suggerirei semplicemente di mettere quel campo a varchar(1000) e buonanotte.

    Io, almeno, farei così.

  7. #7
    Originariamente inviato da franzauker Mettigliene 1000 e buonanotte
    Ok, grazie mille!

    Quindi lo trasformo in un campo Text (e lato javascript limito a 1000 il numero di caratteri scrivibili)

    Ti ringrazio molto per la spiegazione.
    Ciao
    1,2,3,4,5,10,100 passi!

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    nuooooo... aumenta solo il varchar a 1000!

  9. #9
    Originariamente inviato da franzauker
    nuooooo... aumenta solo il varchar a 1000!

    scusa ma in mysql varchar tiene al massimo 255 caratteri, no?

    Nel campo varchar, ho provato a inserire un testo lungo 1000 caratteri ma non ci sta, viene tagliato...
    1,2,3,4,5,10,100 passi!

  10. #10
    Originariamente inviato da i_am_antipop

    scusa ma in mysql varchar tiene al massimo 255 caratteri, no?

    Nel campo varchar, ho provato a inserire un testo lungo 1000 caratteri ma non ci sta, viene tagliato...
    Values in VARCHAR columns are variable-length strings. The length can be specified as a value from 0 to 255 before MySQL 5.0.3, and 0 to 65,535 in 5.0.3 and later versions. The effective maximum length of a VARCHAR in MySQL 5.0.3 and later is subject to the maximum row size (65,535 bytes, which is shared among all columns) and the character set used.
    http://dev.mysql.com/doc/refman/5.0/en/char.html

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

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.