我在用MySQL v5.1在乌班图机器。
MySQL数据目录是/var/lib/mysql/
我有一个test.dat
文件位于/var/lib/mysql/tmp/test.dat
我想将test.dat
文件中的数据加载到数据库表中,因此我执行以下 SQL 语句:
LOAD DATA INFILE '/var/lib/mysql/tmp/test.dat'
INTO TABLE myapp.cars;
但我收到以下错误:
Mysql2::Error: Can't get stat of '/var/lib/mysql/tmp/test.dat' (Errcode: 2): LOAD DATA INFILE '/var/lib/mysql/tmp/test.dat
'
可能是什么原因??
聚苯乙烯我想到的一件事是/var/lib/mysql/
只能通过根用户,但我不确定是否是这个原因。
答案1
$ ls -ld /var/lib/mysql
drwx------ 21 mysql mysql 4096 2011-11-18 14:07 /var/lib/mysql
是的,您没有该目录的权限(这可能root:root
取决于您的设置)。使用:
sudo mysql -u mysqluser -e "LOAD DATA INFILE '/var/lib/mysql/tmp/test.dat' INTO TABLE myapp.cars;"
或者只需将文件复制到您的主目录(或其他位置)并将chown
其发送给您自己。
答案2
如果您的文件位于本地主机上,请使用
LOAD DATA LOCAL INFILE ...
代替LOAD DATA INFILE
。
另外,具有 mysql 用户可读的文件权限,并且由 mysql root 运行该文件:
GRANT FILE ON *.* to <your_db_user_name>@localhost;