问题: mysql将table导出文件时无法写文件
mysql> use CommutingData;
mysql> SELECT * INTO OUTFILE '/home/rach/countybasin.txt' FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' FROM countybasin_US;
ERROR 1 (HY000): Can't create/write to file '/home/rach/countybasin.txt' (Errcode: 13)
原因: 貌似是权限问题,mysql的文档上说“The SELECT ... INTO OUTFILE 'file_name' form of SELECT writes the selected rows to a file. The file is created on the server host, so you must have the FILE privilege to use this syntax.” 所以这个操作是按照mysql自己的daemon进行的,而不按照是用户的身份。
解决:1. 最简单的方法: 改路径,比如 /temp/countybasin.txt 然后mv走 (有时候这个方法也出一样的问题,此时请检查读写权限设置,参考http://www.cyberciti.biz/faq/mysqld-innodb-error-unable-to-create-temporary-file/)
2. 修改/etc/apparmor.d/usr.sbin.mysqld文件,在最后加入 /home/rach w, 但是我试了貌似也不行,不知道是不是没有重启的缘故
3. 此法是google来的,没有试成功,把select语句的outfile选项都删掉,然后存成.sql文件,执行
mysql -u myuser -ppassword -h remotehost mydb < myquery.sql > my_output_file.txt 有试验成的请具体给个例子,谢谢