sql >> Database >  >> RDS >> Mysql

Waarom krijg ik JPEG-fout 42 wanneer deze in een database is opgeslagen?

JPEG-fout 42 wordt gerapporteerd wanneer de stream wordt afgekapt. Als u bijvoorbeeld probeert een bestand met een lengte van nul te laden in een TJPEGImage dan is fout 42 het eindresultaat.

Als sommige afbeeldingen worden weergegeven, maar niet alle, dan is de meest waarschijnlijke verklaring dat de gegevens op de een of andere manier de heen- en terugreis naar de DB en terug niet maken.

Controleer de grootte van het BLOB-veld wanneer u het uitschrijft. Controleer of het overeenkomt met de grootte van het bestand wanneer u het naar een schijfbestand schrijft. Controleer of het schijfbestand een geldig JPEG is. Bevestig vervolgens dat het BLOB-veld exact dezelfde lengte heeft wanneer u het opnieuw leest. Misschien is er iets mis met je DB-code en wordt de stream afgekapt.

Dus de allereerste stap hier is om te bevestigen dat u exact dezelfde gegevens kunt herstellen die u oorspronkelijk in de DB had gezet.

De enige andere gedachte die ik heb, is dat de afbeelding in de beeldbesturing niet altijd een JPEG is. De code die u gebruikt om de afbeelding te laden, Image1.Picture.Graphic.LoadFromStream() gaat ervan uit dat de gegevens een JPEG zijn. Als u iets anders dan een JPEG had opgeslagen, dan LoadFromStream() zou mislukken.




  1. MySQL krijgt een gesprek tussen twee gebruikers

  2. Willekeurige rijen selecteren met MySQL

  3. Selecteer een aparte kolom samen met enkele andere kolommen in MySQL

  4. Kan op afstand verbinding worden gemaakt met SQL Server Express LocalDB?