如何将图像插入 mysql 数据库

时间:2021-04-13 17:13:48

标签: mysql

我正在做一个舞台,我必须使用 BLOB 将图像保存在数据库中。

我试图这样做:

INSERT IGNORE INTO cinema_multisala.movie VALUES
('The Lion King', '2021-12-01', '21:00:00', 'description', 'cast', LOAD_FILE('C:/Users/danie/Desktop/LionKing.jpg'), 'producer');

但是 LOAD_FILE 总是返回 null,我该怎么办?我不明白我的路径错误。我已经尝试将所有这些分隔符用于路径:/\\\

(我想使用代码而不是使用 MySqlWorkbench 的 Load Value From File,这样我就可以正确上传图像)

secure_file_priv | C:\ProgramData\MySQL\MySQL Server 8.0\data\Uploads\

现在我把我的图片放在那个目录中,但查询结果不一样了:

INSERT IGNORE INTO cinema_multisala.movie VALUES ('The Lion King', '2021-12-01', '21:00:00', 'description', 'cast', LOAD_FILE('/LionKing.jpg'), 'producer');

我有 FILE 权限。

选择长度(LOAD_FILE('LionKing.jpg'));返回空

2 个答案:

答案 0 :(得分:0)

是否设置了 secure_file_priv 变量?

mysql> show variables like "secure_file_priv";
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| secure_file_priv |       |
+------------------+-------+
1 row in set (0.00 sec)

如果secure_file_priv 系统变量设置为非空目录名,则要加载的文件必须位于该目录中。

答案 1 :(得分:0)

终于一切正常,我做到了,我必须放完整路径,而不仅仅是来自secure_file_priv的相对路径:

INSERT INTO cinema_multisala.movie VALUES
    ('title', '2021-12-01', '21:00:00', 'description', 'cast', LOAD_FILE('C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Data\\Uploads\\LionKing.jpg') , 'producer');

奇怪的是,我不得不从 BLOB 修改为 MEDIUMBLOB,但在使用 MySqlWorkbench 的文件加载值之前,我能够在 BLOB 中上传相同的图像,不知道为什么。

相关问题