将图像插入 bytea 列显示 0 字节

Inserting image into bytea column shows 0 bytes

数据库是:POSTGRESQL

数据库驱动程序:PDO

我的查询是:

INSERT INTO
poi (
    "idPoiCategory",
    name, 
    "shortName", 
    description, 
    url, 
    source, 
    "contactPostalCode", 
    "contactCity", 
    "contactAddress", 
    "contactPhone", 
    "contactPhone2", 
    "contactMail", 
    "mediaPhotoCopyright", 
    "mediaPhotoMain", 
    "mediaPhotoMiniature1", 
    "mediaPhotoMiniature2", 
    "mediaPhotoOriginalWidth", 
    "mediaPhotoOriginalHeight", 
    "mediaPhotoMiniatureWidth", 
    "mediaPhotoMiniatureHeight", 
    "mediaPhotoCropX", 
    "mediaPhotoCropY", 
    "mediaPhotoCropWidth", 
    "mediaPhotoCropHeight" 
)
VALUES (
    :id_poi_category, 
    :name, 
    :short_name, 
    :description, 
    :url, 
    :source, 
    :postal_code, 
    :city, 
    :street_with_number, 
    :phone_number_1, 
    :phone_number_2, 
    :mailto, 
    :photos_copyright, 
    :photo_main, 
    :photo_miniature_1, 
    :photo_miniature_2, 
    :photo_original_width, 
    :photo_original_height, 
    :photo_miniature_width, 
    :photo_miniature_height, 
    :photo_crop_x, 
    :photo_crop_y, 
    :photo_crop_width, 
    :photo_crop_height 
) 
RETURNING "idPoi" 

我使用以下方式绑定参数(bytea 参数):

$stmt->bindParam(':photo_main', $fields['photo_main'], PDO::PARAM_LOB);
$stmt->bindParam(':photo_miniature_1', $fields['photo_miniature_1'], PDO::PARAM_LOB);
$stmt->bindParam(':photo_miniature_2', $fields['photo_miniature_2'], PDO::PARAM_LOB);

问题是:为什么图像不插入 bytea 列?他们的 (列)大小显示 0 字节。我正在尝试插入这些图像,但列仍然显示 0 字节的大小。我试图将二进制数据转换为十六进制并将其填充到列中 - 徒劳无功,结果仍然相同:0 字节。

管理员有问题。它将列报告为“0 字节”,尽管其中有数据。您可以通过在 SQL 查询 f.ex 中使用函数 octet_length() 来检查这一点:octet_length("column_name_with_bytea")。它应该报告大于 0 的值。