我想做什么?
怎么了?
系统
/home/user/Blob/Test.jpg,/tmp/Test.jpg,甚至/var/lib(mysql/images/Test.jpg下面数据库
我用一个名为和Longblob变量的表创建了一个名为Blobtest的数据库。
CREATE TABLE Test (id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,longblobimg LONGBLOB NOT NULL, blobimg BLOB NOT NULL, PRIMARY KEY(id));
+-------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| longblobimg | longblob | NO | | NULL | |
| blobimg | blob | NO | | NULL | |
+-------------+------------------+------+-----+---------+----------------+插入语句
(在本例中,使用/home/user/目录)
INSERT INTO Test VALUES (1, LOAD_FILE('/home/user/Blob/Test.jpg'), LOAD_FILE('/home/user/Blob/Test.jpg'));解决这一问题的方法
我遵循了这个链接FILE() loads null values的说明
chmod和chown命令测试了几个目录,它们属于mysql或用户。SHOW VARIABLES LIKE 'max_allowed_packet';设置为16 MB或16777216,图片大小为817 MB。select HEX(LOAD_FILE('/home/user/Blob/Test.jpg'));返回空解决方案?
我不知道这是MariaDB中的一个bug,还是我是唯一一个有这个问题的人。为了再次指出这一点:我希望将图片存储在这个数据库中。我不想存储路径。这是一个实验,我必须将图片存储在数据库中。
如果有人能帮我解决这个问题,那就太棒了!
发布于 2018-03-16 08:47:52
只有当文件位于数据库服务器上时,LOAD_FILE()才能工作。如果服务器与文件位于同一个系统上,那么加载它就没有问题。如果是这样的话,我建议打开一个错误报告,说明错误报告的不足。
将数据二进制加载到服务器的其他方法
通常,连接器提供将二进制数据加载到数据库的方法。例如,MariaDB C连接器提供mysql_stmt_send_long_data。
另一种选择是将数据转换为客户端的非二进制编码(例如base64或十六进制),并在服务器上对其进行解码(base64与FROM_BASE64,十六进制与UNHEX)。
https://stackoverflow.com/questions/39332201
复制相似问题