为什么使用LOAD DATA INFILE时会出现错误?
问题描述:
我试图用SQL
从我的笔记本上传一个csv
文件到数据库,但是我得到一个奇怪的错误。我打字到在phpMyAdmin SQL窗口中的代码如下:为什么使用LOAD DATA INFILE时会出现错误?
LOAD DATA INFILE '/Users/myMac/testServerUpload.csv'
INTO TABLE `testDatabase`
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
,但我得到了以下错误:
Error
SQL query:
LOAD DATA INFILE '/Users/myMac/testServerUpload.csv' INTO TABLE `testDatabase` FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
MySQL said: Documentation
#1045 - Access denied for user 'ukld'@'%' (using password: YES)
我应该使用LOAD DATA LOCAL INFILE
,而不是我目前的命令,该文件是在我的电脑上?两者都给我一个错误,我认为LOCAL
可能意味着它在服务器上。我找不到有关此错误的建议。
答
您需要登录为root用户,运行:
SHOW GRANTS FOR 'ukld'@'%';
机会是你没有,你认为你做的权限......你需要对数据库和表(S INSERT特权)您正在尝试LOAD DATA
。
UPDATE:
要纠正GRANT问题,在你的MySQL运行这些语句为根安装:
REVOKE SELECT, INSERT, UPDATE, DELETE, CREATE,
DROP, INDEX, ALTER, CREATE TEMPORARY TABLES,
LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW,
CREATE ROUTINE, ALTER ROUTINE
ON ukld.* FROM 'ukld'@'%';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE,
DROP, INDEX, ALTER, CREATE TEMPORARY TABLES,
LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW,
CREATE ROUTINE, ALTER ROUTINE
ON ukld.* TO 'ukld'@'%' IDENTIFIED BY PASSWORD 'xxx';
FLUSH PRIVILEGES;
确保在设置了正确的密码第二个陈述。
答
我有同样的问题,并通过使用本地,并给予完整的文件路径固定它:
'C:/directory/file.csv'
看来1045错误来自没有访问文件的服务器,这是在上如果未指定LOCAL,mySQL将查找该文件。
参见:
@AJ我想,结果如下:'GRANT USAGE ON *已确定BY PASSWORD 'ukld' @ '%' 'XXX'。GRANT选择,插入,更新,删除,创建,删除,索引,ALTER,创建临时表,锁表,执行,创建视图,显示视图,创建例程,改变常规'ukld'。* TO'ukld'@' %' ' – djq 2011-06-01 01:22:28
看起来像第二个GRANT语句缺少'IDENTIFIED BY PASSWORD'xxx'部分... – 2011-06-01 01:24:08
嗯。这是我的数据库,我可以手动将csv文件导入到它。当我运行“SQL”这行时,有什么方法可以输入密码? – djq 2011-06-01 01:26:02