【问题标题】:Why do I get an error when using LOAD DATA INFILE?为什么在使用 LOAD DATA INFILE 时会出现错误?
【发布时间】:2011-06-01 01:15:02
【问题描述】:

我正在尝试使用SQLcsv 文件从我的笔记本电脑上传到数据库,但是我收到了一个奇怪的错误。我在 phpMyAdmin 的 SQL 窗口中输入的代码如下:

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 可能意味着它在服务器上。我找不到搜索此错误的相关建议。

【问题讨论】:

    标签: mysql sql macos load-data-infile mysql-error-1045


    【解决方案1】:

    我遇到了同样的问题,并通过使用 LOCAL 并提供完整的文件路径来修复它:

    'C:/directory/file.csv' 
    

    似乎 1045 错误来自于无法访问 服务器 上的文件,如果未指定 LOCAL,mySQL 会在该服务器上查找文件。

    另见:

    【讨论】:

      【解决方案2】:

      您需要以 root 身份登录并运行:

      SHOW GRANTS FOR 'ukld'@'%';

      您可能没有您认为的权限...您需要对您尝试LOAD DATA 的数据库和表具有 INSERT 权限。


      更新:

      要纠正 GRANT 问题,请在您的 MySQL 安装中以 root 身份运行这些语句:

      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;
      

      确保在第二条语句中设置了正确的密码。

      【讨论】:

      • @AJ 我试过了,结果如下:GRANT USAGE ON *.* TO 'ukld'@'%' IDENTIFIED BY PASSWORD 'xxx' 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'@'%'
      • 看起来第二个 GRANT 语句缺少 IDENTIFIED BY PASSWORD 'xxx' 部分...
      • 嗯。这是我的数据库,我可以手动将 csv 文件导入其中。当我运行这行SQL 时,有什么方法可以输入我的密码吗?
      • 这不是输入密码的问题。查看错误 - 它说:“使用密码:是”意味着您正在提供密码(但系统不接受它)。您需要做的是更新第二组权限的 GRANTS,以便它包含您的密码。我会更新我的答案,告诉你如何做到这一点。
      • @AJ 感谢您的帮助。我用正确的密码运行了你写的语句,但收到一条错误消息#1044 - Access denied for user 'ukld'@'%' to database 'ukld'
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-12
      • 1970-01-01
      • 2019-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多