Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tại sao tôi gặp lỗi JPEG 42 khi nó được lưu trữ trong cơ sở dữ liệu?

Lỗi JPEG 42 được báo cáo khi luồng bị cắt ngắn. Ví dụ:nếu bạn cố gắng tải một tệp có độ dài bằng 0 vào một TJPEGImage thì lỗi 42 là kết quả cuối cùng.

Nếu một số hình ảnh hiển thị, nhưng không phải tất cả, thì lời giải thích có khả năng nhất là dữ liệu bằng cách nào đó không thực hiện chuyến đi khứ hồi đến DB và quay lại.

Kiểm tra kích thước của trường BLOB khi bạn viết nó ra. Kiểm tra xem nó có phù hợp với kích thước của tệp khi bạn ghi nó vào tệp đĩa hay không. Kiểm tra xem tệp đĩa có phải là JPEG hợp lệ không. Sau đó, xác nhận rằng trường BLOB có cùng độ dài khi bạn đọc lại. Có lẽ đã xảy ra lỗi với mã DB của bạn và luồng đang bị cắt bớt.

Vì vậy, bước đầu tiên ở đây là xác nhận rằng bạn có thể khôi phục chính xác dữ liệu mà bạn đã đưa vào DB ban đầu.

Ý nghĩ khác duy nhất mà tôi có là đồ họa trong điều khiển hình ảnh không phải lúc nào cũng là JPEG. Mã mà bạn sử dụng để tải hình ảnh, Image1.Picture.Graphic.LoadFromStream() giả định rằng dữ liệu là JPEG. Nếu bạn đã lưu thứ gì đó không phải là JPEG thì LoadFromStream() sẽ thất bại.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các thủ tục được lưu trữ trong Ruby on Rails

  2. django.db.utils.operationalError:(2059, Trình cắm xác thực 'caching_sha2_password')

  3. Làm thế nào để hoán đổi giá trị của hai hàng trong MySQL mà không vi phạm ràng buộc duy nhất?

  4. SQL Lấy các hàng khác từ hàm tổng hợp

  5. Cách truy vấn sql với bản ghi hoạt động cho các ngày trong khoảng thời gian được chỉ định