从 mysql 5.6 升级到 mysql 5.7 之后(由于从 Ubuntu 15.10 更新到 Ubuntu 16.04 并且之前使用过 purge,因为更新中有一个 bug:https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1573279),LOAD DATA INFILE
我的每一个申请都会导致:
Caused by: java.sql.SQLException: The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
该选项在更新过程中似乎发生了变化:
mysql> SHOW VARIABLES LIKE "secure_file_priv";
+------------------+-----------------------+
| Variable_name | Value |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+
不幸的是,我找不到可以指定此选项的地方:
root@reichelt-ThinkPad-T440s:/etc/mysql# fgrep "secure-file-priv" * -r
不返回任何内容。默认值似乎已更改:https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_secure_file_priv。
自己将其设置为/etc/mysql/mysql.conf.d/mysqld.cnf
旧值/var/lib/mysql
确实解决了问题,但是,当我不设置它时,它会打印上面的错误,而该错误不应该打印,因为该值是默认设置的。这是 mysql 行为中的错误,还是我错过了行为中的某些内容?
答案1
这里有几个解决此问题的选项。
-使用以下命令确定可以从中导入文件的指定目录:
1.SHOW VARIABLES LIKE "secure_file_priv"; -或者,您可以在查询中使用 LOCAL。这样,文件将由客户端(而不是服务器)导入,并通过现有的客户端连接提供。
2.将数据本地输入文件“text.txt”加载到表mytable中;