gpt4 book ai didi

MySQL load_file() 用于 .zip 文件夹

转载 作者:行者123 更新时间:2023-12-03 13:56:07 24 4
gpt4 key购买 nike

我有几个文件要一起存储在 mysql 表的 blob 类型列中。所以我只是把它们放在一个文件夹中,然后压缩它。我在使用 load_file() 函数存储图像、文本和 pdf 文件时从来没有遇到过任何问题,但是当我尝试使用 .zip 文件夹时,我得到了一个 NULL 值。
我错过了什么?谢谢!

最佳答案

我注意到了同样的现象。
这确实看起来有点奇怪,而且与操作系统有关。这是我的调查结果(使用 MARIA DB 10.4,Windows 10 Pro20H2):
在给定的文件夹中,C:\zipfolder例如,我创建了一个文本文件 zipdoc.txt带有一些文本内容和一个包含文本文件的 zip 文件。
这给出了以下 load_file输出:

select load_file('C:\\zipfolder\\zipdoc.txt');
+----------------------------------------+
| load_file('C:\\zipfolder\\zipdoc.txt') |
+----------------------------------------+
| zipcontent text |
+----------------------------------------+

select load_file('C:\\zipfolder\\zipdoc.zip');
+----------------------------------------+
| load_file('C:\\zipfolder\\zipdoc.zip') |
+----------------------------------------+
| NULL |
+----------------------------------------+
.zip 更改文件扩展名至 .zip_例如。解决了这个问题:
select load_file('C:\\zipfolder\\zipdoc.zip_');
+---------------------------------------------------------------------------------------------------------------------------------------+
| load_file('C:\\zipfolder\\zipdoc.zip_') |
+---------------------------------------------------------------------------------------------------------------------------------------+
| PK♥♦¶ FÄLR├SAÏ☼ ☼
zipdoc.txtzipcontent textPK☺☻¶ ¶ FÄLR├SAÏ☼ ☼
☺ zipdoc.txtPK♣♠ ☺ ☺ 8 7 |
+---------------------------------------------------------------------------------------------------------------------------------------+
因此,看起来 Windows 10 以比其他文件更严格的方式阻止对 .zip 文件的访问。
捐赠 EVERYONE访问 zip 文件允许 load_file原始zip文件的函数访问。使用以下 Powerhell 脚本(从 here 采用)授予访问权限后:
$acl = Get-Acl C:\zipfolder\zipdoc.zip
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("Jeder","Read","Allow")
$acl.SetAccessRule($AccessRule)
$acl | Set-Acl C:\zipfolder\zipdoc.zip
load_file 能够访问 zipfile:
select load_file('C:\\zipfolder\\zipdoc.zip');
+---------------------------------------------------------------------------------------------------------------------------------------+
| load_file('C:\\zipfolder\\zipdoc.zip') |
+---------------------------------------------------------------------------------------------------------------------------------------+
| PK♥♦¶ FÄLR├SAÏ☼ ☼
zipdoc.txtzipcontent textPK☺☻¶ ¶ FÄLR├SAÏ☼ ☼
☺ zipdoc.txtPK♣♠ ☺ ☺ 8 7 |
+---------------------------------------------------------------------------------------------------------------------------------------+
因此,解决方案是授予 EVERYONE访问 zip 文件或只是更改文件的扩展名(管理员仍然需要找到更严格的工作访问级别)。
补充:正如@Álvaro González 所提到的,使用设置适当权限的归档程序也是一种解决方案。

关于MySQL load_file() 用于 .zip 文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66076239/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com