MySQL导入数据时碰到Error Code: 1290 以及解决

本文介绍了如何在MySQL 8.0中遇到的1290错误,即由于--secure-file-priv选项导致无法导入CSV文件。解决方案包括检查secure_file_priv环境变量、修改SQL文件路径为反斜杠转义、查找并编辑my.ini配置文件。

 MySQL在执行create table之后,进行load data:

执行如下代码

create table sale (  
    year  integer,  
    market varchar(6),  
    sale long,
    profit long
);  
load data infile 'C:\SomeDir\mysql_csv\0907\Uploads\sale.csv' 
     into table sale  
     CHARACTER SET gb2312
     fields terminated by ','
     optionally enclosed by '"' escaped by '"'  
     lines terminated by '\r\n';

导入Error Code: 1290. The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

解决步骤:

第一步 在MySQL 8.0 Command Line Client 中查看环境变量secure_file_priv

 仅该变量指定的目录中文件允许导入,故将sql文件和待导入csv文件复制到该目录下。

执行发现问题依旧如故

Error Code: 1290. The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

第二步 将需要执行的的sql文件中形如如下部分:

load data infile 'C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\sale.csv' 
     into table sale  
     CHARACTER SET gb2312
     fields terminated by ','
     optionally enclosed by '"' escaped by '"'  
     lines terminated by '\r\n';

其中的文件路径(高亮部分)的"\",改成"\\"或"/"则可以执行无误。

 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/sale.csv'   

或者

 'C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads/sale.csv'   

另一个解决:

实际的操作中没有找到my.ini,是因为相关文件和文件夹在Win10系统中为隐藏文件,通过打开隐藏文件可以找到:

C:\ProgramData\MySQL\MySQL Server 8.0\my.ini

进而也可以修改其中的如下信息,为存放文件的地方。

# Secure File Priv.

secure-file-priv="C:/ProgramData/MySQL/MySQL Server 8.0/Uploads"

### 解决MySQL导入数据因无法打开所需的默认配置文件而导致的错误 当遇到“failed to open required defaults file”错误,通常是因为MySQL客户端或服务器在尝试加载默认配置文件(通常是`my.cnf`)失败。以下是可能的原因和解决方案: 1. **检查配置文件路径**:确保MySQL配置文件(如`my.cnf`)存在于正确的路径中。默认情况下,MySQL会在以下路径中查找配置文件[^3]: - `/etc/my.cnf` - `/etc/mysql/my.cnf` - `~/.my.cnf` 如果这些路径中没有找到配置文件,可以手动创建一个并指定必要的参数。 2. **权限问题**:确认MySQL进程是否有权限访问配置文件。可以通过以下命令检查文件权限并进行调整: ```bash ls -l /etc/my.cnf chmod 644 /etc/my.cnf chown mysql:mysql /etc/my.cnf ``` 3. **指定配置文件路径**:如果配置文件不在默认路径中,可以通过命令行参数指定其位置。例如: ```bash mysql --defaults-file=/path/to/my.cnf -u username -p ``` 4. **验证配置文件语法**:使用以下命令验证配置文件是否存在语法错误: ```bash mysqld --validate-config ``` 5. **临禁用默认配置文件**:如果需要绕过默认配置文件以测试问题是否与之相关,可以使用`--no-defaults`选项运行MySQL命令: ```bash mysql --no-defaults -u username -p ``` 6. **重新生成配置文件**:如果配置文件损坏或丢失,可以从MySQL安装目录复制一个示例配置文件,并根据需求进行修改。例如: ```bash cp /usr/share/mysql/my-large.cnf /etc/my.cnf ``` 7. **检查MySQL版本兼容性**:如果使用的是MySQL 8.0,需要注意其新特性可能影响配置文件格式。例如,某些选项已被废弃或重命名[^2]。确保配置文件中的参数与当前MySQL版本兼容。 通过上述方法,应能解决“failed to open required defaults file”的问题。 ```python # 示例代码:验证MySQL配置文件是否存在语法错误 import subprocess def validate_mysql_config(config_path): try: result = subprocess.run( ['mysqld', '--validate-config', '--defaults-file=' + config_path], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True ) if result.returncode == 0: print("Configuration file is valid.") else: print(f"Error in configuration file: {result.stderr}") except Exception as e: print(f"An error occurred: {e}") # 调用函数 validate_mysql_config('/etc/my.cnf') ```
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值