博客
关于我
MySQL8找不到my.ini配置文件以及报sql_mode=only_full_group_by解决方案
阅读量:793 次
发布时间:2023-02-11

本文共 1976 字,大约阅读时间需要 6 分钟。

MySQL 8 找不到 my.ini 配置文件及 sql_mode=only_full_group_by 的解决方案

一、找不到 my.ini 配置文件

MySQL 8 安装或启动过程中,如果系统找不到 my.ini 文件,通常意味着 MySQL 服务器无法找到其配置文件。在 Windows 系统上,MySQL 8 预期使用 my.ini 作为配置文件,而不是某些情况下使用的 my.cnf 文件。

通过运行以下命令查看 MySQL 的安装路径:

mysql --execute "SELECT @@basedir;"

然后进入安装目录,检查是否存在 my.ini 文件。如果不存在,可以按照以下步骤创建 my.ini 文件:

  • 默认安装情况

    • my.ini 文件应位于 MySQL 安装目录的根目录下。
  • 自定义安装或文件不存在

    • 在安装目录的根目录下创建一个新的 my.ini 文件。
  • 建议参考以下默认内容创建 my.ini 文件:

    [mysql]# 设置 mysql 客户端默认字符集default-character-set=utf8mb4[mysqld]# 设置 mysql 服务端默认端口port=3306# 设置 mysql 的安装目录(替换为你的实际路径)basedir="D:\OpenResource\MySQL\MySQL Server 8.3"# 设置 mysql 数据存储目录(替换为你的实际路径)datadir="D:\OpenResource\MySQL\MySQL Server 8.3\data"# 配置最大连接数max_connections=200# 配置连接失败次数max_connect_errors=10# 服务端字符集,默认使用 utf8mb4character-set-server=utf8mb4# 创建新表时默认存储引擎default-storage-engine=INNODB# 默认使用 mysql_native_password 插件进行认证default_authentication_plugin=mysql_native_password# 关闭 ONLY_FULL_GROUP_BYsql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'

    2. 修改 my.ini 配置文件路径

    在命令行中运行以下命令,确保 MySQL 使用正确的 my.ini 文件:

    mysqld --defaults-file="D:\OpenResource\MySQL\MySQL Server 8.3\my.ini"

    3. 重启 MySQL 服务器

    在命令行中执行以下命令重启 MySQL 服务:

    # 停止 MySQL 服务器net stop mysql# 启动 MySQL 服务器net start mysql

    二、解决 sql_mode=only_full_group_by 问题

    问题描述

    MySQL 5.7.5 及以上版本启用了功能依赖检测功能,若启用了 ONLY_FULL_GROUP_BY SQL 模式,MySQL 会拒绝那些在 GROUP BY 子句中引用未命名集合列或依赖这些集合列的查询。

    解决方法

  • 查看当前配置

    • 查看 SQL 模式:
      SELECT @@global.sql_mode;
    • 查看数据目录:
      SELECT @@datadir;
  • 修改 my.ini 文件

    • 在 my.ini 文件中,修改 sql_mode 的值:
      # 关闭 ONLY_FULL_GROUP_BYsql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
    • 如果你的 MySQL 版本是 5.x,可以在 sql_mode 中添加 NO_AUTO_CREATE_USER;如果是 8.x,则不必添加,否则可能导致服务无法启动。
  • 重启 MySQL 服务

    • 停止 MySQL 服务器:
      net stop mysql
    • 启动 MySQL 服务器:
      net start mysql
  • 注意事项

    • 确保 sql_mode 配置正确,建议在修改前备份配置文件。
    • 如果你在 MySQL 8.0 中添加了 NO_AUTO_CREATE_USER,可能会导致某些功能异常,请谨慎处理。

    参考文章

    • MySQL 8.0 找不到 my.ini 配置文件及报 sql_mode=only_full_group_by 的解决方案

    转载地址:http://lnbfk.baihongyu.com/

    你可能感兴趣的文章
    MySQL 中开启二进制日志(Binlog)
    查看>>
    MySQL 中文问题
    查看>>
    MySQL 中日志的面试题总结
    查看>>
    MySQL 中随机抽样:order by rand limit 的替代方案
    查看>>
    MySQL 为什么需要两阶段提交?
    查看>>
    mysql 为某个字段的值加前缀、去掉前缀
    查看>>
    mysql 主从 lock_mysql 主从同步权限mysql 行锁的实现
    查看>>
    mysql 主从互备份_mysql互为主从实战设置详解及自动化备份(Centos7.2)
    查看>>
    mysql 主键重复则覆盖_数据库主键不能重复
    查看>>
    mysql 优化器 key_mysql – 选择*和查询优化器
    查看>>
    MySQL 优化:Explain 执行计划详解
    查看>>
    Mysql 会导致锁表的语法
    查看>>
    mysql 使用sql文件恢复数据库
    查看>>
    mysql 修改默认字符集为utf8
    查看>>
    Mysql 共享锁
    查看>>
    MySQL 内核深度优化
    查看>>
    mysql 内连接、自然连接、外连接的区别
    查看>>
    mysql 写入慢优化
    查看>>
    mysql 分组统计SQL语句
    查看>>
    Mysql 分页语句 Limit原理
    查看>>