我试图将xml文件目录作为blob加载到数据库表中。每一行将包含一个对应的blob文件。当通过python脚本将文件加载到表中时,值被插入为null。在mysql命令行中运行等效命令时也是如此。
在将一些文件夹权限更改为mysql后,我一度能够插入值,但由于需要脚本权限,我不得不修改目录/var/lib/mysql/foo的所有权,因此值被重新插入为null,这实际上破坏了我编写的脚本。我记不起这样做需要更改目录权限。
以下是对该主题的讨论:
http://bugs.mysql.com/bug.php?id=38403
伴随着
MySQL加载文件返回NULL
我因这个问题耽误了一些时间。在我的例子中,问题与“my.ini”中定义的secure_file_priv变量有关。
从MySQL留档:
如果secure_file_priv系统变量设置为非空目录名要加载的文件必须位于该目录中
所以,有两种方法:
1)删除此选项2)使用默认文件夹上传文件(C:\Program Data\MySQL\MySQL Server 5.7\Uploads)。我还必须在Windows中使用双斜杠。
确保:
父目录权限示例:
mysql> \! ls -ld `dirname /home/jlam/code/projectName/doc/filesForTesting/images/imageTest01.jpg` drwxrwxr--. 2 jlam jlam 4096 May 12 14:22 /home/jlam/code/projectName/doc/filesForTesting/images mysql> select hex(LOAD_FILE('/home/jlam/code/projectName/doc/filesForTesting/images/image Test01.jpg')); +-------------------------------------------------------------------------------------------------------------+ | hex(LOAD_FILE('/home/jlam/code/projectName/doc/filesForTesting/images/imageTest01.jpg')) | +-------------------------------------------------------------------------------------------------------------+ | NULL | +-------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> \! chmod o+x /home/jlam/code/projectName/doc/filesForTesting/images mysql> \! ls -ld `dirname /home/jlam/code/projectName/doc/filesForTesting/images/imageTest01.jpg` drwxrwxr-x. 2 jlam jlam 4096 May 12 14:22 /home/jlam/code/projectName/doc/filesForTesting/images mysql> select hex(LOAD_FILE('/home/jlam/code/projectName/doc/filesForTesting/images/imageTest01.jpg')); +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | hex(LOAD_FILE('/home/jlam/code/projectName/doc/filesForTesting/images/imageTest01.jpg')) +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | FFD8FFE1001845786966000049492A00080000000000000000000000FFEC00114475636B7900010004000000500000FFE10407687474703A2F2F6E732E61646F62652E636F6D2F7861702F312E302F003C3F787061636B657420626567696E3D22EFBBBF222069643D2257354D304D7043656869487 +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
用户权限示例:
16:38:09 (getImages) ~/code/projectName/doc/filesForTesting/images$ mysql -u eventCal -p eventCal Enter password: mysql> show grants; +-----------------------------------------------------------------------------------------------------------------+ | Grants for eventCal@localhost | +-----------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'eventCal'@'localhost' IDENTIFIED BY PASSWORD '*xxxx' | | GRANT ALL PRIVILEGES ON `tmp`.* TO 'eventCal'@'localhost' | | GRANT ALL PRIVILEGES ON `eventCalTesting`.* TO 'eventCal'@'localhost' | | GRANT ALL PRIVILEGES ON `eventCal`.* TO 'eventCal'@'localhost' | | GRANT ALL PRIVILEGES ON `eventCal_categoryMigration`.* TO 'eventCal'@'localhost' | +-----------------------------------------------------------------------------------------------------------------+ 5 rows in set (0.00 sec) mysql> select hex(LOAD_FILE('/home/jlam/code/projectName/doc/filesForTesting/images/imageTest01.jpg')); +-------------------------------------------------------------------------------------------------------------+ | hex(LOAD_FILE('/home/jlam/code/projectName/doc/filesForTesting/images/imageTest01.jpg')) | +-------------------------------------------------------------------------------------------------------------+ | NULL | +-------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
在其他根会话中:
mysql> grant file ON *.* to eventCal@localhost; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
在用户会话中,我仍然无法加载文件
mysql> select hex(LOAD_FILE('/home/jlam/code/projectName/doc/filesForTesting/images/imageTest01.jpg')); +-------------------------------------------------------------------------------------------------------------+ | hex(LOAD_FILE('/home/jlam/code/projectName/doc/filesForTesting/images/imageTest01.jpg')) | +-------------------------------------------------------------------------------------------------------------+ | NULL | +-------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
.....但如果我退出并重新登录:
mysql> exit Bye 16:40:14 (getImages) ~/code/projectName/doc/filesForTesting/images$ mysql -u eventCal -p eventCal Enter password: mysql> select hex(LOAD_FILE('/home/jlam/code/projectName/doc/filesForTesting/images/imageTest01.jpg')); +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | hex(LOAD_FILE('/home/jlam/code/projectName/doc/filesForTesting/images/imageTest01.jpg')) +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | FFD8FFE1001845786966000049492A00080000000000000000000000FFEC00114475636B7900010004000000500000FFE10407687474703A2F2F6E732E61646F62652E636F6D2F7861702F312E302F003C3F787061636B657420626567696E3D22EFBBBF222069643D2257354D304D7043656869487 +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
我将文件复制到了MySQL可以访问的位置
要知道我使用的位置:
select @@secure_file_priv;
它给了我/var/lib/mysql文件/
。
其他方法都不起作用:既不能关闭幽灵,也不能更改所有权和权限,也不能仅仅授予file
特权。所以我回滚了大部分,但是正确的目录仍然有效。在我的情况下。
我的消息来源是Raymond Nijland,这里:https://dba.stackexchange.com/questions/190380/load-file-producing-null
我想让SQL LOAD_FILE函数正常工作,并且已经阅读了关于这个问题的每一个问答文档,但下面是正在发生的事情。 当我想从主目录加载_文件时: 所以在得到这个之后,我想问题可能是MySQL无法访问我的主目录。我试着运行这个,效果很好: 然后
问题内容: 我正在尝试将xml文件的目录作为blob加载到数据库表中。每行将包含一个对应的Blob文件。通过python脚本将文件加载到表中时,值将插入为null。在mysql命令行中运行等效命令时,也是如此。 有一次,我可以在将一些文件夹权限更改为mysql后插入值,但是由于需要脚本权限,我不得不修改目录/ var / lib / mysql / foo的所有权,因此值被重新插入为null,有效
我正在使用Apache PDFBox渲染PDF文档的缩略图。因此,我加载PDF并将第一页用作缩略图。问题是,对于特定的文档,似乎没有正确加载。对于所有其他文档,它的工作方式与预期一致。 <代码>ByteArrayInputStream is=新建ByteArrayInputStream(pdfData) PDDocument pdf=PDDocument。载荷(is,true) <代码>列表 pd
问题内容: 我正在使用cdh5 quickstart vm,并且我有一个像这样的文件(此处不完整): 我使用了这个脚本: 该脚本有效,但是生成的文件为空,您有什么想法吗? 问题答案: 最后,只有此模式有效:如果我添加或删除与该配置不同的空格,那么我将出现错误(我还为元组添加了“名称”,并在其为空时指定了“ null”,并更改了作者之间的顺序和来源,但即使没有这种配置,它仍然是错误的) 工作脚本是这
我试图在Spring boot类中使用@Autowired注释将存储库放入一个用@Service注释的类中。但是,存储库显示为空。 以下是相关代码: 此时它会得到一个NPE,因为licenceReposity为空。 我可以使用此构造函数访问控制器类中的licenseRepository 但是,由于我直接在静态main方法中调用构造函数,这似乎不可用。将存储库放入此类的最佳方法是什么? 编辑:感谢您
我的应用程序部署在一个JBoss6服务器中,该服务器包含最新的BC实现bcprov-jdk15on-151.jar放在服务器安装的lib文件夹中。尝试运行以下代码段时: JBoss似乎没有成功地在tmp目录中打开JAR进行验证。我做了多个测试,例如:-在一个单独的主类中手动验证JAR-在tmp目录中创建一个文件并在JBoss应用程序代码中打开它-更改默认的tmp目录(java.io.tmpdir)