Tom: /MySQL - Blob nur 64 KB gross

Beitrag lesen

Hello,

ok... mysql_escape_string() ist gesetzt. Klappt auch schön. Trotzdem bleibt der BLOB nur 64 KB gross. Und das ist eindeutig zu wenig... Noch irgendwelche Ideen woran das liegen könnte?

Ja, das ist wie vermutet. Ein BLOB kann 2^16 -2 Bytes Nutzdaten aufnehmen.

http://www.mysql.de/doc/de/Storage_requirements.html

Spaltentyp                  Speicherbedarf
CHAR(M)                     M Bytes, 1 <= M <= 255
VARCHAR(M)                  L+1 Bytes, wobei L <= M und 1 <= M <= 255
TINYBLOB, TINYTEXT          L+1 Bytes, wobei L < 2^8
BLOB, TEXT                  L+2 Bytes, wobei L < 2^16
MEDIUMBLOB, MEDIUMTEXT      L+3 Bytes, wobei L < 2^24
LONGBLOB, LONGTEXT          L+4 Bytes, wobei L < 2^32
ENUM('wert1','wert2',...)   1 oder 2 Bytes, abhängig von der Anzahl
                            der Aufzählungswerte (65535 Werte maximal)
SET('wert1','wert2',...)    1, 2, 3, 4 oder 8 Bytes, abhängig von der
                            Anzahl von SET-Elementen (64 Elemente maximal)

Ist ja auch angesichts der immer noch gültigen Segmentgrenzen für durchgeängige Speicherbereiche ganz logisch.

Da musst Du dann den Datentyp wechseln und auf MediumBlob oder LongBlob umsteigen. Man sollte diese Typen aber nur benutzen, wenn sowieso immer der gesamte Dateiinhalt benötigt wird. Die Information über Dateiformat oder die ersten 256 Bytes sollte man dann ggf. nochmals gesondert (redundant) ablegen, sodass man immer Zugriff auf den Dateiheader hat, auch ohne die Nutzdaten komplett laden zu müssen.

Liebe Grüße aus http://www.braunschweig.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen