【MySQL】如何解决Error Code: 3948&Error Code: 2068

解决Workbench导入大CSV文件时MySQL错误:local_infile配置与访问限制,
文章讲述了在Workbench中导入大型CSV文件时遇到的两个错误,分别是loadinglocaldata禁用和文件访问限制。提供了检查local_infile设置、修改配置文件以及通过命令提示符以带文件加载功能登录MySQL的解决方案。

 问题:在使用workbench导入一个较大的csv文件时出现以下错误:

Error Code: 3948. Loading local data is disabled; this must be enabled on both the client and server sides

解决方法

1、先查询本地文件加载功能

show variables like 'local_infile';

若显示ON,表明功能已打开;若显示OFF,说明功能未打开,需要进行一下操作。

2、找到MySQL的配置文件(通常是my.cnfmy.ini),在文件中找到[mysqld]部分,添加或修改如下行:

secure-file-priv = ""
local-infile=1

或者直接输入代码

set global local_infile=1;

完成以上操作之后再运行打开文件的代码,出现了新的错误

Error Code: 2068. LOAD DATA LOCAL INFILE file request rejected due to restrictions on access.

解决方法
打开命令提示符(win+R再输入cmd),先输入cd "C:\Program Files\MySQL\MySQL Server 8.0\bin" 进入MySQL所在的路径,再输入 mysql -u root -p --local-infile -p 以自带文件加载功能登录MySQL(会跳出输入密码的截面)。

输入代码:

USE `sql_project`;

接着在命令提示符界面输入文件打开的代码:

LOAD DATA LOCAL INFILE 'C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\tianchi_mobile_recommend_train_user.csv' 
INTO TABLE userbehavior
FIELDS TERMINATED BY ","
LINES TERMINATED BY "\n";

注意:文件存放在指定位置,并且路径中不存在中文。

以上为解决MySQL存入文件中遇到的两个错误的方法。

MySQL_错误代码以及出错信息对照: 0101 属于其他进程的专用标志。 0102 标志已经设置,无法关闭。 0103 无法再次设置该标志。 0104 中断时无法请求专用标志。 0105 此标志先前的所有权已终止。 0106 请将软盘插入驱动器 %1。 0107 后续软盘尚未插入,程序停止。 0108 磁盘正在使用或已由其他进程锁定。 0109 管道已经结束。 0110 系统无法打开指定的设备或文件。 0111 文件名太长。 0112 磁盘空间不足。 0113 没有其他可用的内部文件标识符。 0114 目标内部文件标识符不正确。 0117 该应用程序所运行的 IOCTL 调用不正确。 0118 校验写入的开关参数值不正确。 0119 系统不支持所请求的命令。 0120 该系统上不支持此功能。 0121 标记已超时。 0123 文件名、目录名或卷标语法错误。 0124 系统调用层不正确。 0125 磁盘没有卷标。 0126 找不到指定的模块。 0127 找不到指定的过程。 0128 没有要等候的子进程。 0129 模式下运行。 0130 试图使用操作(而非原始磁盘I/O)的已打开磁盘分区的文件句柄。 0131 试图将文件指针移至文件开头之前。 0132 无法在指定的设备或文件中设置文件指针。 0133 对于包含已连接驱动器的驱动器,不能使用 JOIN 或 SUBST 命令。 0134 试图在已经连接的驱动器上使用 JOIN 或 SUBST 命令。 0135 试图在已经替换的驱动器上使用 JOIN 或 SUBST 命令。 0136 系统试图删除尚未连接的驱动器的 JOIN。 0137 系统试图删除尚未替换的驱动器的替换项。 0138 系统试图将驱动器连接到已连接的驱动器下的目录。 ... ...
### 三级标题:MySQL Error Code: 3948 解决方案 MySQL 在导入本地数据时,可能会出现错误代码 `Error Code: 3948`,提示信息为 `Loading local data is disabled; this must be enabled on both the client and server`。该错误表明 MySQL 服务器和客户端均未启用本地数据加载功能,导致无法执行 `LOAD DATA LOCAL INFILE` 操作[^1]。 要解决此问题,需要分别在 MySQL 服务器和客户端配置文件中启用本地数据加载功能。具体操作如下: #### 在 MySQL 服务器端启用本地数据加载 首先需要在 MySQL 配置文件中启用 `local_infile` 选项。配置文件通常位于 `C:\ProgramData\MySQL\MySQL Server 8.0\my.ini`(Windows)或 `/etc/my.cnf`(Linux)中。 在 `[mysqld]` 段落中添加: ```ini [mysqld] local_infile=1 ``` 保存配置文件后,重启 MySQL 服务以使更改生效。 #### 在 MySQL 客户端启用本地数据加载 除了服务器端,还需要在客户端连接时启用 `local_infile` 选项。例如,在使用 `mysql` 命令行工具时,可以添加 `--local-infile=1` 参数启动客户端: ```bash mysql --local-infile=1 -u root -p ``` 如果使用的是编程语言(如 Python)连接 MySQL 数据库,可以在连接参数中启用 `local_infile`。例如,使用 `pymysql` 库时: ```python import pymysql connection = pymysql.connect( host='localhost', user='root', password='your_password', database='your_database', local_infile=True ) ``` #### 验证本地数据加载功能是否已启用 连接 MySQL 后,可以执行以下 SQL 查询以确认 `local_infile` 是否已启用: ```sql SHOW VARIABLES LIKE 'local_infile'; ``` 如果返回值为 `ON`,则表示本地数据加载功能已成功启用。 #### 示例:成功导入本地 CSV 文件 当本地数据加载功能启用后,可以使用以下 SQL 语句导入本地 CSV 文件: ```sql LOAD DATA LOCAL INFILE 'C:/path/to/your/data.csv' INTO TABLE your_table FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 LINES; ``` 其中 `IGNORE 1 LINES` 表示跳过 CSV 文件的第一行(如表头)。 --- ### 三级标题:总结 通过在 MySQL 服务器和客户端同时启用 `local_infile` 功能,可以有效解决 `Error Code: 3948` 问题。修改配置文件后需重启服务,并在连接数据库时确保启用本地加载选项。不同客户端工具可能需要额外配置,例如在 Python 中使用 `pymysql` 时需设置 `local_infile=True`。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值