• 从2021年4月起,论坛网上药店重新开放!详情查看
  • 从2023年10月10日开始,华夏中医论坛启用备用域名tcmbe.com 详情查看
  • 关于论坛电子书等资源下载权限的说明!详情查看
  • 论坛官方2000人QQ群,欢迎加入!详情查看
  • 对所有可能涉及版权的资源,论坛均不再公开展示!详情查看

原创首发 最近开发了一款针灸中药病历记录软件,将免费!

使用navicat或HeidiSql的导入导出功能来导数据库。
一般我们使用 MySQL 自带的导入导出功能来实现数据转移:
导出:
mysqldump -u $USER -p$PASSWORD --opt --databases $db > $db.sql

导入:
mysql -u $USER -p$PASSWORD < $db.sql
理论上只要写入MySQL的图片数据符合规范,导入到MariaDB上也应该是正常的,但是我没测试过。
 
一般我们使用 MySQL 自带的导入导出功能来实现数据转移:
导出:
mysqldump -u $USER -p$PASSWORD --opt --databases $db > $db.sql

导入:
mysql -u $USER -p$PASSWORD < $db.sql
理论上只要写入MySQL的图片数据符合规范,导入到MariaDB上也应该是正常的,但是我没测试过。

现在同时用两个软件管理,显示图片的效果见下。新保存的图片,在mariaDB中显示的也是乱码,在Navicat中就正常。
问了deepseek,它也说在MariaDB中就那样,你们能看到图或类似navicat的效果?图二是HeidiSQL中的效果。


n.png


m.png
 
最后编辑:
现在同时用两个软件管理,显示图片的效果见下。新保存的图片,在mariaDB中显示的也是乱码,在Navicat中就正常。
问了deepseek,它也说在MariaDB中就那样,你们能看到图或类似navicat的效果?图二是MariaDB中的效果。
我问了一下chatGPT,“mariadb 中保存图片,不能正常显示图片信息吗?”

回复是:

MariaDB 可以存储图片,但如果图片信息(如 EXIF 数据)无法正常显示,可能的原因有以下几种:

1. 存储方式问题
BLOB 类型适合存储二进制数据(如图片),但需要确保正确存取:

TINYBLOB (≤ 255B)
BLOB (≤ 64KB)
MEDIUMBLOB (≤ 16MB)
LONGBLOB (≤ 4GB)
存储时是否正确插入数据?

sql
INSERT INTO images (name, data) VALUES ('test.jpg', LOAD_FILE('/path/to/image.jpg'));
需确认 secure_file_priv 允许 LOAD_FILE 访问该目录。
也可使用参数化 SQL 通过编程语言(如 Python、PHP)存入。

2. 读取时是否正确解析?
读取 BLOB 数据时,需确保输出格式正确:
sql
SELECT data FROM images WHERE id = 1;
在应用端(如 PHP、Python)中,要正确处理 BLOB 数据,并设置正确的 Content-Type 头,例如:
php
header("Content-Type: image/jpeg");
echo $row['data'];

3. EXIF 数据丢失
如果 EXIF 信息无法读取:
确保 BLOB 存储的是真实的完整文件,而不是经过处理的流数据。
检查是否被 MariaDB 内部转换(如 TEXT 类型存储,可能丢失二进制数据)。
读取时,使用 php-exif、exiftool 等工具验证:
bash
exiftool /path/to/image.jpg

4. 字符集问题
如果图片数据存入 TEXT 或 VARCHAR 类型列,可能因字符集转换导致数据损坏。请使用 BLOB 类型。

5. 浏览器或前端解析问题
如果网页无法显示:
确保 Content-Type 设置正确。
使用 base64 方式测试:
sql
SELECT TO_BASE64(data) FROM images WHERE id = 1;
然后在 HTML 中:
html
<img src="data:image/jpeg;base64,BASE64编码数据">
你遇到的具体情况是怎样的?是图片无法显示,还是 EXIF 信息丢失?
 
Navicat 本身不是数据库,只是管理数据库的图形界面而已。
是啊。管理数据的图形界面HeidiSql看的时候就乱码(之前描述有误),Navicat就正常。在软件前端图片的显示是正常的。就是通过HeidiSql或Navicat看到的图片显示不一样。现在设置的数据类型是MEDIUMBLOB,存取是正常的。软件设置的每张图的上限大小是200Kb。稍后我考虑下使用相对路径的可行性。
 
最后编辑:
是啊。管理数据的图形界面HeidiSql看的时候就乱码,Navicat就正常。在软件前端图片的显示是正常的。就是通过HeidiSql或Navicat看到的图片显示不一样。现在设置的数据类型是MEDIUMBLOB,存取是正常的。软件设置的每张图的上限大小是200Kb。稍后我考虑下使用相对路径的可行性。
你可以认为是 HeidiSql 功能欠缺引起的,非 MySQL 和 MraiaDB 功能差异。HeidiSql 作为开源免费软件,性能功能不如 Navicat 很正常。
 
图片放在数据库里面会占用很大的磁盘空间。

我原来使用ACCESS数据库时发现:
如果向里面装一张几十K的图片,数据库的大小就会增加几百K甚至一两兆。

DeepSeek也建议不要将图片存放在数据库中:
 

附件

软件编程已基本完毕,先放个视频链接,原来的被我删掉了。https://www.bilibili.com/video/BV1TfPMegEje/
或许今天就能把程序打包上传到github上,还得写个简单的使用教程(MariaDB数据库的简单设置和软件使用的简单介绍,相信大家即使不看软件介绍也能一会儿就上手了)。后期软件稳定后会上传源码。
同时,后期的问题反馈也集中在github上回复。
若是可以的话,请版主把一楼中的视频链接替换掉,把这部分内容加到1楼。先行谢过。
 
软件已上线,有需要的可自行下载。在github上页面右边的Releases中,数据库文件在Asset中。配置使用教程在pdf文件夹中。
同时,在百度网盘共享文件夹中也有一个备份:https://pan.baidu.com/s/1OuwatwLof2krifXI9SA3mg?pwd=urih
网盘里放了MariaDB的安装和数据库导入导入的详细教程,供参考。
:084:
 
最后编辑:
后退
顶部