需求:替换数据库中的图片文件,字段为blob格式
最终只需要一条sql命令:
update charge set img = load_file('C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/2.png');
先说一下踩的坑:
1、之前不知道此函数,直接用replace函数,第三个参数为文件绝对路径;
update charge set img= replace(img,'*',NULL);
2、用Python将图片文件转成二进制,使用下面语法:
sql ="update charge set img= fimg where phonenum != NULL"
变量fimg就是打开的图片文件二进制格式,由于是在sql语句中,且格式问题复杂,参数的传递问题暂时没法解决。
3、load_file函数,不知道文件路径有要求,浪费了一段时间。
检查文件存不存在语法:
SELECT LOAD_FILE('C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/2.png') AS RESULT;
一开始我的文件是放在桌面的,因此一直无效。
上传之前你需要检查一下两点:
首先是文件大小是否小于允许的最大字节。
show variables like 'max_allowed_packet';
其次,需要查看允许上传文件的目录。
show variables like 'secure_file_priv';
所以,只有将文件放置在上述目录中才能成功读取到,最后用命令:
update charge set img = load_file('C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/2.png');
`
完成文件上传,注意斜杠方向,至此成功将表charge中的img字段(Blob格式)全部改成上述路径图片。