在mysql中load data数据
mysql> load data infile '/home/a.txt' into table table_a;
ERROR 13 (HY000): Can't get stat of '/home/a.txt' (Errcode: 13)
我们用perror命令打印出具体错误信息
>perror 13
OS error code 13: Permission denied
看起来是权限的问题,
perror命令是MySQL数据库系统中的一个工具程序,它用于打印C语言中errno错误代码的含义、也可以打印MySQL中存储引擎错误代码的含义。(perror prints a description for a system error code or for a storage engine (table handler) error code.)
由于perror是MySQL中的一个工具程序,在没有安装MySQL的机器上就无法执行,本文的示例四将给出大致的源代码供大家参考。
常用参数
格式:perror <errno>
打印系统错误代码errno值的含义。
格式:perror <Errcode>
打印MySQL数据库系统中定义的错误代码的含义。
格式:perror <err1> <err2> ...
打印多个错误代码的含义。
(参考:http://codingstandards.iteye.com/blog/1127327)
找到一篇文章:
MySQL: ERROR13(HY000):Can't get stat of的问题
但是将LOAD DATA INFILE
换成
LOAD DATA LOCAL INFILE
OK!
原因分析:
源自Mysql中文手册:
出于安全原因,当读取位于服务器中的文本文件时, 文件必须位于数据库目录中,或者是全体可读的。另外,要对服务器文件使用LOAD DATA INFILE,您必须拥有FILE权限。
如果指定了LOCAL,则文件会被客户主机上的客户端读取,并被发送到服务器。文件会被给予一个完整的路径名称,以指定确切的位置。
权限问题啊!
参考:
http://blog.chinaunix.net/uid-23392298-id-62350.html