评论我正在尝试,
mysql>
LOAD DATA LOCAL INFILE '/var/tmp/countries.csv'
INTO TABLE countries
FIELDS TERMINATED BY ','
ENCLOSED BY '"' LINES
TERMINATED BY '\n'
IGNORE 1 LINES
(CountryId,CountryCode,CountryDescription,CountryRegion,LastUpdatedDate,created_by,created_on)
SET created_by = 'DH_INITIAL_LOAD', created_on = current_timestamp();
Run Code Online (Sandbox Code Playgroud)
错误 2068 (HY000):由于访问限制,LOAD DATA LOCAL INFILE 文件请求被拒绝。`
它工作正常,我为 python 脚本下载了 pymysql 和 mysql 连接器。我卸载并检查它仍然无法正常工作。版本和 infile 为 ON,
select version() -| 8.0.17
mysql> SHOW GLOBAL VARIABLES LIKE 'local_infile';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile | ON |
+---------------+-------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
Niv*_*jan 27
已知问题:https : //bugs.mysql.com/bug.php?id=91872
尝试连接到 mysql 本身时的解决方法将 local-infile 设置为 1 并执行加载命令:mysql --local-infile=1 -h$MASTER_DB_HOST -u$MASTER_DB_USER -p$MASTER_DB_PASSWD -D$MASTER_DB_NAME
对于 ubuntu:
编辑文件 /etc/mysql/mysql.conf.d/mysqld.cnf 并在最后添加以下行:
重启服务
systemctl stop mysql
systemctl start mysql
Run Code Online (Sandbox Code Playgroud)
运行: mysql -u root -p 并检查本地 infile 变量
mysql> show global variables like 'local_infile';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile | OFF |
+---------------+-------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
mysql> set global local_infile=true;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile | ON |
+---------------+-------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
mysql> exit
Bye
Run Code Online (Sandbox Code Playgroud)
跑
mysql --local-infile=1 -u root -p
Run Code Online (Sandbox Code Playgroud)
LOAD DATA INFILE '/var/lib/mysql-files/filename' INTO TABLE tablename;
Run Code Online (Sandbox Code Playgroud)
要修复此错误(mysql 8):
错误 2068 (HY000):由于访问限制,加载数据本地 INFILE 文件请求被拒绝。
将以下行添加到服务器的配置文件中的“客户端”部分下:
[client]
loose-local-infile=1
Run Code Online (Sandbox Code Playgroud)
这将修复该错误。但是,这假设您已经在“mysqld”部分下设置了以下内容:
[mysqld]
local_infile=1
Run Code Online (Sandbox Code Playgroud)
在配置文件中设置这两个参数将允许从任何目录加载数据。
这是一个简单的使用示例。在mysql终端中运行:
load data local infile '/path/to/file/data.tsv' into table my_table_name
fields terminated by '\t'
LINES TERMINATED BY '\n'
(
`col1`,
`col2`,
`col3`,
`col4`
);
Run Code Online (Sandbox Code Playgroud)