sql >> Database teknologi >  >> RDS >> Mysql

Hvorfor får jeg JPEG-fejl 42, når den er gemt i en database?

JPEG-fejl 42 rapporteres, når strømmen afkortes. For eksempel, hvis du forsøger at indlæse en nullængde fil i et TJPEGImage så er fejl 42 slutresultatet.

Hvis nogle billeder vises, men ikke alle, så er den mest sandsynlige forklaring, at dataene på en eller anden måde ikke tager rundt til DB'en og tilbage.

Tjek størrelsen på BLOB-feltet, når du skriver det ud. Tjek, at det stemmer overens med størrelsen på filen, når du skriver den til en diskfil. Kontroller, at diskfilen er en gyldig JPEG. Bekræft derefter, at BLOB-feltet har nøjagtig samme længde, når du læser det igen. Måske er der noget galt med din DB-kode, og streamen bliver afkortet.

Så det allerførste trin her er at bekræfte, at du kan gendanne nøjagtig de samme data, som du oprindeligt lagde ind i DB.

Den eneste anden tanke, jeg har, er, at grafikken i billedstyringen ikke altid er en JPEG. Den kode, du bruger til at indlæse billedet, Image1.Picture.Graphic.LoadFromStream() antager, at dataene er en JPEG. Hvis du havde gemt noget andet end en JPEG, så LoadFromStream() ville mislykkes.




  1. Forbindelsesproblemer med SQLAlchemy og flere processer

  2. Et dybdegående kig på databaseindeksering

  3. optimering af forespørgsel med datediff() i mysql

  4. Brugerkontostyring, roller, tilladelser, autentificering PHP og MySQL