Errore SQL nella creazione di una tabella.

di il
3 risposte

Errore SQL nella creazione di una tabella.

Buongiorno a tutti,
sto cercando di creare una tabella in un DB My sql su PHPMyadmin ma il sistemi mi da il seguente errore "#1118 - Row size too large (> 8126). Changing some columns to TEXT or BLOB may help". Come posso ovviare senza diminuire il nr di colonne? Il fatto è che devo importare dei file CSV che hanno tutte quelle colonne e vorrei aumentare la possibilità di fare colonne ma non riesco a capire come.
Grazie

3 Risposte

  • Re: Errore SQL nella creazione di una tabella.

    Il tuo csv ha una riga piu' lunga di 8k?

    in altri termini, quante sono le colonne?
    di che tipo sono?
    quale e' la massima lunghezza che ti aspetti per ogni colonna?

    nel senso: se una colonna e' il nome di una citta', non ha senso farla lunga 86 caratteri (o 128 tanto per stare larghi) per farci stare il nome della citta' piu' lungo al mondo. te ne bastano 16 o al limite 32. se un nome non ci sta', lo tronchi.
  • Re: Errore SQL nella creazione di una tabella.

    migliorabile ha scritto:


    Il tuo csv ha una riga piu' lunga di 8k?

    in altri termini, quante sono le colonne?
    di che tipo sono?
    quale e' la massima lunghezza che ti aspetti per ogni colonna?

    nel senso: se una colonna e' il nome di una citta', non ha senso farla lunga 86 caratteri (o 128 tanto per stare larghi) per farci stare il nome della citta' piu' lungo al mondo. te ne bastano 16 o al limite 32. se un nome non ci sta', lo tronchi.
    grazie per la risposta, erano tutti VARCHAR (30) ho sostiutito con TEXT e non ho avuto problemi ma cmq credo che, alla fine, parecchio lo foltirò.
    Ma dimmi la differenza tra ARCHAR e TEXT qual è??
    Grazie
  • Re: Errore SQL nella creazione di una tabella.

    Varchar(n) alloca n slot per memorizzare stringhe con un massimo di n caratteri.
    nota che un carattere NON NECESSARIAMENTE È lungo un byte. potrebbe essere lungo 2 o 4 byte! dipende dalla configurazione del DB.

    text e' un po' piu' intelligente perché usa un'allocazione separata per la stringa/text e mantiene nel record SOLO un puntatore (4 o 8 byte) (in termini di database, NON un puntatore alla C). questo permette di avere stringhe lunghe un bel po' (mi pare megabyte, boh! non me lo ricordo)
Devi accedere o registrarti per scrivere nel forum
3 risposte