• 【MySQL】常见错误汇总


    目录

    一、远程连接MySQL用户权限问题

    解决方案

    二、mysql使用聚合函数group by 报错

    解决方案一

    解决方案二

     三、MySQL导入数据时 server has gone away

    解决方案一

    解决方案二


    一、远程连接MySQL用户权限问题

    远程连接MySQL时,提示:ERROR 1130: Host xxx.xxx.xxx.xxx is not allowed to connect to this MySQL server,是无法给远程连接的用户权限问题。

    解决方案

    输入mysql -u root -p密码  进入mysql控制台,执行下面两条语句,即可远程连接了

    1. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
    2. flush privileges;

    二、mysql使用聚合函数group by 报错

    linux上,mysql使用聚合函数group by 时报错:SELECT list is not in GROUP BY clause and contains nonaggre

    报错示例

    1. Expression #2 of SELECT list is not in GROUP BY clause and contains
    2. nonaggregated column ‘sss.month_id’ which is not functionally
    3. dependent on columns in GROUP BY clause; this is incompatible with
    4. sql_mode=only_full_group_by

    问题分析: MySQL 5.7.5及以上功能依赖检测功能。如果启用了ONLY_FULL_GROUP_BY SQL模式(默认情况下),MySQL将拒绝选择列表,HAVING条件或ORDER BY列表的查询引用在GROUP BY子句中既未命名的非集合列,也不在功能上依赖于它们。(5.7.5之前,MySQL没有检测到功能依赖关系,默认情况下不启用ONLY_FULL_GROUP_BY。有关5.7.5之前的行为的说明,请参见“MySQL 5.6参考手册”。)

    解决方案一

    1、打开navcat,用sql查询:

    select @@global.sql_mode

    2、运行结果

    ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

    3、去掉ONLY_FULL_GROUP_BY,重新设置值。

    set @@global.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后会恢复原来的模式,产生错误。

    解决方案二

    在配置文件 /etc/my.cnf 或自己的mysql配置文件中去掉ONLY_FULL_GROUP_BY,此方法永久有效。

    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导入数据时 server has gone away

    一般在我们导入大文件时会连接断开,导致出现此类错误

    导致原因

    • MySQL服务器超时设置过短,导致连接断开。
    • 导入的sql文件过大,MySQL服务器无法处理所有数据,导致连接断开。
    • MySQL服务器内存不足,无法处理数据,导致连接断开。

    解决方案一

    修改超时设置:打开Mysql配置文件,找到"[mysqld]"一栏,在下面修改(没有这两个参数的话可直接添加)下面两个参数

    1. wait_timeout=600
    2. max_allowed_packet=64M

    参数值可以根据自己需求修改,修改完成后记得重启mysql

    解决方案二

    当一个sql文件过大时,我们可以通过将其拆分成更小的文件,逐个导入到数据库中,以避免连接断开的问题。可以使用“split”或其他类似命令进行操作。

    持续更新 ~

  • 相关阅读:
    总结篇:链表
    Friend.tech(FT):社交媒体金融的未来,真的如此美好吗?
    有源RFID标签系统SOC单发芯片——Si24R2E
    【前端】Vue+Element UI案例:通用后台管理系统-Header+导航栏折叠
    linux系统与应用
    【软件安装】docker 安装 elasticsearch 和 kibana
    ZZNUOJ_用C语言编写程序实现1342:支配值数目(附完整源码)
    GSMA SGP.01协议学习
    python解析pcap报文_scapy解析pcap文件
    Selenium Webdriver自动化测试框架
  • 原文地址:https://blog.csdn.net/qq_25285531/article/details/134026757