I use MySQL queries all the time in PHP, but when I try
LOAD DATA INFILE
I get the following error
#1045 - Access denied for user 'user'@'localhost' (using password: YES)
Does anyone know what this means?
I use MySQL queries all the time in PHP, but when I try
LOAD DATA INFILE
I get the following error
#1045 - Access denied for user 'user'@'localhost' (using password: YES)
Does anyone know what this means?
I just ran into this issue as well. I had to add LOCAL
to my SQL statement.
For example, this gives the permission problem:
LOAD DATA INFILE '{$file}' INTO TABLE {$table}
Add LOCAL
to your statement and the permissions issue should go away. Like so:
LOAD DATA LOCAL INFILE '{$file}' INTO TABLE {$table}
--local-infile
option. –
Mccorkle LOAD DATA LOCAL INFILE
and there are constrains conflicts on insert, then it won't return any error/exception and will execute and returns true. –
Waggoner ERROR 1148 (42000): The used command is not allowed with this MySQL version
–
Fugacious I had this problem. I searched around and did not find a satisfactory answer. I summarise below the results of my searches.
The access denied error could mean that:
GRANT FILE on *.* to user@'localhost'
); or,Try using this command:
load data local infile 'home/data.txt' into table customer;
This should work. It worked in my case.
ERROR 1148 (42000): The used command is not allowed with this MySQL version
–
Fugacious Ensure your MySQL user has the FILE privilege granted.
If you are on shared web hosting, there is a chance this is blocked by your hosting provider.
If you are trying this on MySQL Workbench,
Go to connections -> edit connection -> select advanced tab
and add OPT_LOCAL_INFILE=1
in the 'Others' text field.
Now restart the connection and try.
I found easy one if you are using command line
Login asmysql -u[username] -p[password] --local-infile
then SET GLOBAL local_infile = 1;
select your database by use [db_name]
and finally 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;
SET GLOBAL local_infile = 1;
doesn't seem to work in RDS, but anyway without that the --local-infile
did the trick –
Ecphonesis The string from Lyon gave me a very good tip: On Windows, we need to use slahes and not backslashes. This code works for me:
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();
I ran into the same issue, and solve it by folowing those steps :
For this 3rd point, you can refer to : https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_secure_file_priv
BR,
AD
This happened to me as well and despite having followed all the steps described by Yamir in his post I couldn't make it work.
The file was in /tmp/test.csv with 777 permissions. The MySQL user had file permissions, LOCAL option was not allowed by my MySQL version, so I was stuck.
Finally I was able to solve the problem by running:
sudo chown mysql:mysql /tmp/test.csv
I discovered loading MySQL tables can be fast and painless (I was using python / Django model manager scripts):
1) create table with all columns VARCHAR(n) NULL e.g.:
mysql> CREATE TABLE cw_well2( api VARCHAR(10) NULL,api_county VARCHAR(3) NULL);
2) remove headers (first line) from csv, then load (if you forget the LOCAL, you’ll get “#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) alter columns:
mysql> ALTER TABLE cw_well2 CHANGE spud_date spud_date DATE;
mysql> ALTER TABLE cw_well2 CHANGE latitude latitude FLOAT;
voilà!
I was trying to insert data from CSV to MYSQL DB using python. You can try the below method to load data from CSV to Database.
Skipping to load data part.
sql = f'''LOAD DATA LOCAL infile "filename.csv" INTO TABLE schema.tablename FILED TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n'''' Note: If you have column names in CSV, use IGNORE ROW 1 LINES. The execute the sql by: cursor.execute(sql) conn.commit() conn.close()
It probably means that the password you supplied for 'user'@'localhost'
is incorrect.
© 2022 - 2024 — McMap. All rights reserved.