sql >> Databasteknik >  >> RDS >> Mysql

Varför får jag JPEG-fel 42 när det lagras i en databas?

JPEG-fel 42 rapporteras när strömmen trunkeras. Till exempel, om du försöker ladda en nolllängdsfil i en TJPEGImage då är fel 42 slutresultatet.

Om vissa bilder visas, men inte alla, är den mest troliga förklaringen att data på något sätt inte gör en tur och retur till DB och tillbaka.

Kontrollera storleken på BLOB-fältet när du skriver ut det. Kontrollera att det överensstämmer med storleken på filen när du skriver den till en diskfil. Kontrollera att diskfilen är en giltig JPEG. Bekräfta sedan att BLOB-fältet har exakt samma längd när du läser det igen. Kanske är det något fel med din DB-kod och strömmen trunkeras.

Så det allra första steget här är att bekräfta att du kan återställa exakt samma data som du ursprungligen lade in i DB.

Den enda andra tanken jag har är att grafiken i bildkontrollen inte alltid är en JPEG. Koden som du använder för att ladda bilden, Image1.Picture.Graphic.LoadFromStream() antar att data är en JPEG. Om du hade sparat något annat än en JPEG så LoadFromStream() skulle misslyckas.




  1. Hur man installerar den senaste MySQL 8 på Debian 10

  2. BoneCP korrekt användning

  3. MySQL max_user_connections vs max_connections

  4. Läsbara sekundärer på en budget