I want to get SQL LOAD_FILE function to work and have read every single question/answer + documentation about this, but here is what's been happening.
When I want to LOAD_FILE from my home directory:
mysql> SELECT LOAD_FILE('/home/myuser/somefile.txt');
+----------------------------+
| LOAD_FILE('/home/myuser/somefile.txt') |
+----------------------------+
| NULL |
+----------------------------+
1 row in set (0.00 sec)
So after getting this, I thought maybe the problem is that MySQL cannot access my home directory. And I tried running this, which worked fine:
SELECT LOAD_FILE('/etc/mysql/my.cnf');
Then SELECT LOAD_FILE('/etc/passwd');
worked fine as well.
So I said gotcha, it's a file/folder read/ownership permission problem. So, I moved my file into /etc/mysql/ but then it still didn't work. I've tried chown mysql:mysql somefile.txt
but still, I had no luck:
mysql> SELECT LOAD_FILE('/etc/mysql/somefile.txt');
+----------------------------+
| LOAD_FILE('/etc/mysql/somefile.txt') |
+----------------------------+
| NULL |
+----------------------------+
1 row in set (0.00 sec)
P.S. 1. All files are readable by all user groups, so no need to chmod. But I've even tried chmod 777 if you'd like to ask. 2. I checked, secure-file-priv variable is not set up in MySQL, so no, LOAD_FILE is not restricted to any path.
Any ideas what might be the problem here?
Load data infile file_name... is the proper command for MySQL. And since you didn't give an example of the data in your file I can't show you know to exactly use it. There are variables to handle delimiters and end of line characteristics. Good luck.
I'd the same problem with Fedora Linux while trying add images to a blob field.
I solved coping the files to the directory
/var/lib/mysql/images
and giving the command:chown -R mysql:mysql /var/lib/mysql/images
I found out that it has to do with AppArmor. I disabled AppArmor for MySQL and it worked. For people having the same problem, please read here: http://www.cyberciti.biz/faq/ubuntu-linux-howto-disable-apparmor-commands/
So I been banging my head against this issue with finally found to to resolve it:
The problem is the secure_file_priv is not set. To see where it is pointed to do the following query:
Perform query:
To point to the area that you are looking to pull file What I did was to add the following to the end mysqld.conf
Restarted mysql and test with
Per Documentation
So check all the above mentioned condition satisfies.
EDIT:
Not sure whether you understood properly ..
make sure the file parent directory have execute permission. So if
somefile.txt
sits undermyuser
directory; you must have execute have permission onmyuser
directory.You must have the FILE privilege.
means the FILE privilege must be granted explicitly usingGRANT FILE on . TO user@localhost
Flush the privilege
Logout and Login back and check whether it's working or not.
See this post MySQL LOAD_FILE() loads null values