Spiegazione errore 139 di MySQL: "Got error 139 from storage engine"

L'errore riguarda il motore InnoDB di MySQL.

La dimensione massima di una singola riga di MySQL e' 8000 bytes, esclusi ovviamente i campi Varchar, Blob, e Text. 
La dimensione massima di una riga che contiene anche campi Varchar, Blob e Text e' di 4GB.

Le colonne che contengono campi LongBLOB e LongText non posso eccedere i 4GB ciascuna e non sono inclusi nel computo del valore di 8000 bytes.

Il problema nasce dal fatto che InnoDB memorizza sempre i primi 768 bytes di ciascun campo Varchar, Blob e Text nella riga stessa ( e il resto in memoria separata).

Pertanto avendo piu' di 11 campi text si eccede la dimensione massima di 8000 bytes, dato che sono comunque memorizzati 768 bytes per ciascun campo.

La soluzione consiste nello spezzare la tabella in piu' tabelle mantendosi sotto il valore di 11 campi text/varchar/blob ovvero sotto il valore:
768*11=8448 .

Questa impostazione e' presente dalla versione di MySQL 4.1 per ragioni di compatibilita' con altri database.

 

 

------------

Le informazioni contenute nella Knowledge Base sono fornite senza garanzia di alcun tipo, implicita od esplicita, compresa quella riguardo alla commercializzazione e/o compatibilita' in impieghi particolari. L'utente si assume l'intera responsabilita' per l'utilizzo di queste informazioni. In nessun caso Notelseit.com e i suoi fornitori si rendono responsabili per danni diretti, indiretti o accidentali che possano provocare perdita di denaro o di dati, anche se Notelseit.com o i suoi fornitori fossero stati avvisati. Il documento puo' essere copiato e distribuito alle seguenti condizioni: 1) il testo deve essere copiato integralmente e tutte le pagine devono essere incluse. 2) i programmi se presenti, devono essere copiati senza modifiche, 3) il documento deve essere distribuito interamente in ogni sua parte. 4) il documento non puo' essere distribuito a scopo di lucro.

  • Email, SSL
  • 0 Utenti hanno trovato utile questa risposta
Hai trovato questa risposta utile?

Related Articles

Che caratteristiche ha il server che ospita i database MS-SQL?

Il servizio di database Microsoft SQL Server viene erogato utilizzando un server con le seguenti...

Come posso trasferire il mio database MS-SQL sui vostri servers?

Il trasferimento del dabatase MS-SQL sui nostri servers puo' essere effettuato utilizzando...

Quali problemi comporta l'aggiornamento del mio db MySQL dalla versione 4.x alla 5.x ?

I problemi che frequentemente si verificano nell'aggiornamento della versione di MySQL sono...

Come richiedere l'attivazione delle Stored procedure e dei Triggers su db MySQL?

E' possibile richiedere tramite ticket di assistenza l'attivazione delle Stored procedure e dei...

E' possibile amministrare i database Microsoft SQL 2005 via TCP-IP?

Per quanto riguarda i servizi di hosting (cd "shared  server" o spazi su server condiviso) per...