我一直在 PHP 中使用 MySQL 查询,但是当我尝试
LOAD DATA INFILE
我收到以下错误
#1045 - 用户 'user'@'localhost' 的访问被拒绝(使用密码:是)
有谁知道这意味着什么?
我一直在 PHP 中使用 MySQL 查询,但是当我尝试
LOAD DATA INFILE
我收到以下错误
#1045 - 用户 'user'@'localhost' 的访问被拒绝(使用密码:是)
有谁知道这意味着什么?
我也遇到了这个问题。我不得不添加LOCAL
到我的 SQL 语句中。
例如,这给出了权限问题:
LOAD DATA INFILE '{$file}' INTO TABLE {$table}
添加LOCAL
到您的声明中,权限问题应该会消失。像这样:
LOAD DATA LOCAL INFILE '{$file}' INTO TABLE {$table}
我有这个问题。我四处寻找,没有找到满意的答案。我在下面总结了我的搜索结果。
拒绝访问错误可能意味着:
GRANT FILE on *.* to user@'localhost'
); 或者,尝试使用此命令:
load data local infile 'home/data.txt' into table customer;
这应该有效。它在我的情况下有效。
确保您的 MySQL 用户已授予 FILE 权限。
如果您使用的是共享网络托管,则您的托管服务提供商可能会阻止它。
如果您使用命令行,我发现很容易
登录为mysql -u[username] -p[password] --local-infile
然后SET GLOBAL local_infile = 1;
选择您的数据库use [db_name]
最后LOAD DATA LOCAL INFILE 'C:\\Users\\shant\\Downloads\\data-1573708892247.csv' INTO TABLE visitors_final_test FIELDS TERMINATED BY ','LINES TERMINATED BY '\r \n' IGNORE 1 LINES;
Lyon 的字符串给了我一个很好的提示:在 Windows 上,我们需要使用斜杠而不是反斜杠。这段代码对我有用:
File tempFile = File.createTempFile(tableName, ".csv");
FileUtils.copyInputStreamToFile(data, tempFile);
JdbcTemplate template = new JdbcTemplate(dataSource);
String path = tempFile.getAbsolutePath().replace('\\', '/');
int rows = template.update(MessageFormat
.format("LOAD DATA LOCAL INFILE ''{0}'' INTO TABLE {1} FIELDS TERMINATED BY '',''",
path, tableName));
logger.info("imported {} rows into {}", rows, tableName);
tempFile.delete();
这也发生在我身上,尽管遵循了 Yamir 在他的帖子中描述的所有步骤,但我无法让它发挥作用。
该文件位于 /tmp/test.csv 中,具有 777 权限。MySQL 用户有文件权限,我的 MySQL 版本不允许 LOCAL 选项,所以我被卡住了。
最后我能够通过运行解决问题:
sudo chown mysql:mysql /tmp/test.csv
我遇到了同样的问题,并按照以下步骤解决:
对于这第三点,您可以参考:https ://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_secure_file_priv
BR,
广告
我发现加载 MySQL 表可以快速而轻松(我使用的是 python / Django 模型管理器脚本):
1) 创建所有列 VARCHAR(n) NULL 的表,例如:
mysql> CREATE TABLE cw_well2( api VARCHAR(10) NULL,api_county VARCHAR(3) NULL);
2)从 csv 中删除标题(第一行),然后加载(如果你忘记了 LOCAL,你会得到“#1045 - Access denied for user 'user'@'localhost' (using password: YES)”):
mysql> LOAD DATA LOCAL INFILE "/home/magula6/cogswatch2/well2.csv" INTO TABLE cw_well2 FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
-> ;
Query OK, 119426 rows affected, 19962 warnings (3.41 sec)
3)改变列:
mysql> ALTER TABLE cw_well2 CHANGE spud_date spud_date DATE;
</p>
mysql> ALTER TABLE cw_well2 CHANGE latitude latitude FLOAT;
瞧!
这可能意味着您提供的密码'user'@'localhost'
不正确。