Mysql
 sql >> база данни >  >> RDS >> Mysql

Защо получавам JPEG грешка 42, когато се съхранява в база данни?

JPEG грешка 42 се съобщава, когато потокът е съкратен. Например, ако се опитате да заредите файл с нулева дължина в TJPEGImage тогава грешка 42 е крайният резултат.

Ако се покажат някои изображения, но не всички, тогава най-вероятното обяснение е, че данните по някакъв начин не се връщат към БД и обратно.

Проверете размера на полето BLOB, когато го изпишете. Проверете дали съвпада с размера на файла, когато го записвате на дисков файл. Проверете дали дисковият файл е валиден JPEG. След това потвърдете, че полето BLOB има точно същата дължина, когато го прочетете отново. Може би нещо не е наред с вашия DB код и потокът се съкращава.

И така, първата стъпка тук е да потвърдите, че можете да възстановите точно същите данни, които първоначално сте поставили в DB.

Единствената друга мисъл, която имам, е, че графиката в контрола на изображението не винаги е JPEG. Кодът, който използвате за зареждане на изображението, Image1.Picture.Graphic.LoadFromStream() предполага, че данните са JPEG. Ако сте запазили нещо различно от JPEG, тогава LoadFromStream() ще се провали.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MYSQL - брой редове във всяка таблица

  2. Ruby mysql2 множество изрази в една заявка

  3. MySQL DROP FOREIGN KEY Ограничение

  4. Защо в MySQL е безопасно да изключите innodb_support_xa за еднонишкови актуализации?

  5. PDO неуспешно с твърде много записи, буферирани заявки