最佳实践—如何使用Blob对象

简介: 本文介绍了如何使用Blob对象。

Java的MySQL各版本驱动(包括5.1.x和8.0.x),在实现PreparedStatement.setBlob方法时都有一些缺陷(无论连接的是mysql server还是PolarDB-X,都存在缺陷),对于一些用于存储二进制格式(例如图片、视频等)的Blob对象,会有概率性的报出语法错误,本文列出一些需要注意的地方。

场景一:PolarDB-X版本<5.4.9

对于低版本的PolarDB-X,其自身不支持SQL中直接携带与连接串字符集不符的二进制信息,需要在客户端转义成如下列所示的十六进制字符串。


insert into t1 values (0xaabbccdd,x'aabbccdd');

方法1:对于Java用户,可以使用PreparedStatement.setBytes方法替换setBlob方法,mysql驱动会将byte[]转义成十六进制字符串。

方法2:对于Java用户,如果不方便使用方法1(例如使用Hibernate等框架,无法控制框架使用哪个set方法),请联系阿里云技术支持,我们会提供一个定制的mysql驱动包,该驱动包内会完成转义。

方法3:对于其他语言用户,请在应用程序中自行完成转义。

场景二:5.4.9<=PolarDB-X版本<5.4.13

该版本的PolarDB-X,额外支持了_binary前缀。因此,除了场景一中的方法继续适用之外,还有以下方法可以使用:

方法4:对于Java用户,可以修改SQL语句,例如原语句:


insert into t1 values (?)

修改为:


insert into t1 values (_binary?)

方法5:对于Java用户,可以使用8.0.26版本的mysql驱动,该驱动在setBlob方法内会自动加上_binary前缀。

场景三:PolarDB-X版本>=5.4.13

该版本比较彻底的兼容了mysql对于二进制信息的处理,上述场景一和场景二的方法继续适用,还有以下方法可以使用:

方法6:使用utf8/utf8mb4连接数据库,例如对于Java用户,jdbcurl中加入参数:


useUnicode=true&characterEncoding=utf8

对于其他语言用户,可以在建完连接后,执行:


set names utf8mb4;

实际上,mysql驱动对于setBlob的实现是有问题的,即使是使用官方mysql server,也必须在连接使用utf8/utf8mb4编码的情况下,才能很好的支持setBlob这种使用方法;对于gbk等编码,都有一定的概率报语法错误。

相关文章
|
2月前
|
缓存 前端开发 JavaScript
阿里云 OSS 实战:从零搭建静态网站托管 + CDN 加速完整指南
本文分享阿里云OSS+CDN托管静态站点的实战方案:省去服务器运维,提升国内访问速度至50ms内;涵盖Bucket配置、SPA路由适配、自动化部署(CLI/GitHub Actions)、HTTPS与CDN缓存策略,并附成本估算(约¥18/月)和常见坑点解析,适合前端开发者快速落地。
|
5月前
|
人工智能 安全 API
保姆级图文教程!OpenClaw(Clawdbot)阿里云/本地部署配置百炼API+5700个 Skill 安全验真及避坑指南
ClawHub作为OpenClaw(原Clawdbot)的官方技能市场,已汇聚5700+各类技能插件,覆盖办公自动化、信息检索、内容创作等全场景需求。但光鲜背后暗藏致命风险:Koi Security报告显示,约12%的Skill存在恶意行为,近期曝光的ClawHavoc供应链攻击更是警示——黑客将恶意代码伪装成“加密钱包追踪器”等实用工具,导致超1000名用户API密钥被窃取、设备植入后门。
2107 6
|
2月前
|
弹性计算 JavaScript 关系型数据库
阿里云Ubuntu云服务器搭建Ghost博客:从零到上线的完整指南
本文提供了一份在阿里云Ubuntu ECS实例上从零搭建Ghost博客的完整技术指南。Ghost作为基于Node.js的开源博客平台,以简洁高效的写作体验著称。文章涵盖ECS实例选购与安全组配置、非root用户创建、Nginx/MySQL 8.0/Node.js 22.x环境安装、Ghost-CLI一键部署、域名绑定与Let's Encrypt SSL证书自动化配置,以及生产环境下的性能调优与日常维护策略。通过本文,读者可在约30分钟内完成一个支持HTTPS、具备完整CMS功能的个人博客上线。文章还针对部署中常见的端口占用、内存不足、数据库连接等典型问题提供了实战排查思路,并附有5个高频问答,
|
存储 人工智能 并行计算
2025年阿里云弹性裸金属服务器架构解析与资源配置方案
🚀 核心特性与技术创新:提供100%物理机性能输出,支持NVIDIA A100/V100 GPU直通,无虚拟化层损耗。网络与存储优化,400万PPS吞吐量,ESSD云盘IOPS达100万,RDMA延迟<5μs。全球部署覆盖华北、华东、华南及海外节点,支持跨地域负载均衡。典型应用场景包括AI训练、科学计算等,支持分布式训练和并行计算框架。弹性裸金属服务器+OSS存储+高速网络综合部署,满足高性能计算需求。
|
存储 安全 数据安全/隐私保护
FileCodeBox:Star4.9k,类似百度网盘,小团队、小公司都用得上的文件共享与分享工具,支持设置分享密码,界面清爽简单易用
FileCodeBox是一款开源文件共享工具,类似百度网盘,适合小团队和公司使用。它支持设置分享密码,界面简洁易用,提供匿名文件和文本分享功能。用户可通过提取码轻松获取文件,支持多种上传方式、文件类型及设备访问。项目基于FastAPI + SQLite3 + Vue3构建,具备轻量、安全、多语言支持等特点
1282 2
|
SQL 存储 Oracle
一次搞定各种数据库SQL执行计划
执行计划(execution plan,也叫查询计划或者解释计划)是数据库执行 SQL 语句的具体步骤,例如通过索引还是全表扫描访问表中的数据,连接查询的实现方式和连接的顺序等。如果 SQL 语句性能不够理想,我们首先应该查看它的执行计划。
一次搞定各种数据库SQL执行计划
|
机器学习/深度学习 存储 PyTorch
深度学习训练时混合精度的作用
在深度学习训练过程中,混合精度(Mixed Precision)是指同时使用不同的数值精度(如16位浮点数和32位浮点数)来进行计算。
718 2
|
前端开发 JavaScript NoSQL
全套检验系统(LIS)源码 云LIS系统源码 区域医疗云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件。这套系统通常与其他信息系统比如医院信息系统(HIS)连接。实验室信息系统由多种实验室流程模块构成,这些模块可以依据客户的实际情况进行选择和配置。选择适合的实验室信息系统对于使用者非常重要,往往要通过几个月的研究和计划。系统的安装调试对于不同的研究阶段也从几周到几个月不等,实验室的研究工作有多少种就有多少种实验室信息系统。大型的实验室信息系统几乎包括了所有的实验室研究的学科内容,比如血液学、化学、免疫学、血库、外科病理学、解剖病理学、在线细胞计数和微生物学。这个条目将说明临
518 2
|
机器学习/深度学习 编解码 算法
CV之NoGAN:利用图像增强技术(图片上色)实现对旧图像和电影片段进行着色和修复(爱因斯坦、鲁迅旧照/清末官员生活场景等案例)
CV之NoGAN:利用图像增强技术(图片上色)实现对旧图像和电影片段进行着色和修复(爱因斯坦、鲁迅旧照/清末官员生活场景等案例)
CV之NoGAN:利用图像增强技术(图片上色)实现对旧图像和电影片段进行着色和修复(爱因斯坦、鲁迅旧照/清末官员生活场景等案例)

热门文章

最新文章