MySQL - 报错问题解决

1、[HY000][1290]

错误信息"[HY000][1290] MySQL服务器使用了–secure-file-priv选项,因此无法执行此语句"表示MySQL服务器已配置启用了–secure-file-priv选项。此选项限制了LOAD DATA INFILE和SELECT INTO OUTFILE语句可以读取或写入文件系统的位置。默认情况下,–secure-file-priv选项设置为特定的目录,只有当文件路径在指定目录内时,才能使用LOAD DATA INFILE或SELECT INTO OUTFILE。

要解决这个问题,有几个选项:

使用允许的目录:

通过运行以下SQL查询来检查–secure-file-priv选项的值:

SHOW VARIABLES LIKE 'secure_file_priv';

这将显示允许使用LOAD DATA INFILE和SELECT INTO OUTFILE的目录。将文件移动到该目录中,或者调整–secure-file-priv选项以允许文件所在的目录。

更改–secure-file-priv选项:

如果有管理员权限,可以修改MySQL服务器配置文件(通常是my.cnf或my.ini),并将–secure-file-priv选项设置为允许文件操作的目录。例如:

[mysqld]
secure-file-priv = /path/to/your/directory

修改配置后,重新启动MySQL服务器以使新配置生效。

使用其他方法:

如果无法控制MySQL服务器的配置或–secure-file-priv选项,可以尝试其他数据导入和导出的方法。例如,可以使用LOAD DATA LOCAL INFILE代替LOAD DATA INFILE。但请注意,使用LOAD DATA LOCAL INFILE有一些安全性方面的考虑,可能不适用于所有场景。

在修改MySQL服务器配置时,请务必谨慎,并确保文件操作符合安全最佳实践,以防止潜在的安全漏洞。

2、[42000][3948]

这个错误信息"[42000][3948] Loading local data is disabled; this must be enabled on both the client and server sides" 表示在MySQL客户端和服务器端都禁用了加载本地数据的功能。在默认情况下,MySQL禁用了从客户端加载本地数据的功能,这是为了增加安全性,防止潜在的安全风险。

要解决这个问题,需要在客户端和服务器端同时启用加载本地数据的功能。有两种方法可以实现这一点:

方法一:在客户端命令行启用

在MySQL客户端连接时,使用以下命令行参数启用加载本地数据的功能:

mysql -u your_username -p --local-infile=1

注意,上述命令中的your_username是MySQL用户名。输入命令后,会提示输入密码。

方法二:在MySQL配置文件中启用

打开MySQL客户端配置文件。在Linux和macOS上,通常是~/.my.cnf 或 ~/.mylogin.cnf。在Windows上,通常是C:\Users\Your_Username.my.cnf。

在配置文件中添加以下内容:

[mysql]
local-infile=1

保存并关闭文件。

无论使用哪种方法,启用加载本地数据功能后,应该能够在MySQL客户端执行LOAD DATA LOCAL INFILE语句而不再遇到"[42000][3948] Loading local data is disabled; this must be enabled on both the client and server sides"错误。

请注意,加载本地数据功能的启用会增加一定的安全风险,因为它允许客户端将本地文件导入到服务器中。因此,在启用该功能时,请确保只从受信任的源导入数据,并且只允许授权的用户执行相关的操作。

3、1055

mysql8.0版本使用groupby去重出现问题解决

问题:

select * from table GROUP BY column;

mysql 执行报错1055

问题分析:

1、查看@@sql_mode

select @@sql_mode;

可见ONLY_FULL_GROUP_BY:
对于GROUP BY聚合操作,若select中的列没有在group by中出现,那么这句SQL是不合法的。

问题解决:

修改my.ini (务必在[mysqld]下,否则不生效)-> sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION;
重启 mysql 即可(mysql80为安装mysql时候自定义名字):

net stop mysql80
net start mysql80

猜你喜欢

转载自blog.csdn.net/qq_43116031/article/details/131926575