m0_71478284 2022-06-04 19:27 采纳率: 100%
浏览 73
已结题

Update更新 bytea类型失败 PostGresql

图片上传,保存到DB(postgresql)中,DB中的类型为bytea,图片插入的时候,把图片转成byte[]型,插入DB,没有问题。
但是更新的时候,传入的图片仍为byte[]型,更新没有成功,DB中bytea项目里被更新成NULL。
麻烦请教各位,更新的时候,改怎样更新bytea类型的项目?谢谢。
update Stu


STATUS = #{status},

image = #{image},
name= #{name}

where id= #{stuid}

  • 写回答

1条回答 默认 最新

  • leaf_cq 2022-06-06 13:04
    关注

    1、对于PostGresQL本身而言,bytea类型的字段本身的更新是没有问题的,我在12版本中进行测试:

        CREATE TABLE t_tmp_tmp001 ( id varchar(100), c1 bytea, PRIMARY KEY( id ) );
    
        INSERT INTO t_tmp_tmp001( id, c1 ) VALUES ( '1', '1234'::bytea ); -- 字符
        SELECT * FROM t_tmp_tmp001;
        UPDATE t_tmp_tmp001 SET c1 = '\132\123\222\177'::bytea WHERE id = '1'; -- 八进制
        SELECT * FROM t_tmp_tmp001;
        UPDATE t_tmp_tmp001 SET c1 = '\xa15c88221f'::bytea WHERE id = '1'; -- 十六进制
        SELECT * FROM t_tmp_tmp001;
    

      三次SELECT分别输出为:

    img

    img

    img

    2、一个是看你的数据库版本,另一个是看你其他两个字段是否更新成功
    3、或者你先将bytea字段更新为null,再更新为你的新值试下看
    4、如果实在不行,就将更新调整为插入语句,将要更新的记录先提取出来,然后删除原来的记录,将原来的数据与新的数据组装成一条添加语句即可。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月19日
  • 已采纳回答 6月11日
  • 创建了问题 6月4日

悬赏问题

  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加
  • ¥15 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题