• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    详解记录MySQL中lower_case_table_names的坑

    1 起因

    项目迁移数据库, 重新启动后, 报错"T_AAA表不存在", 但数据库中可以查看到该表并有数据

    2 问题分析

    通过重装系统与数据库, 确认系统与数据库纯净, 排除系统和数据库的原因
    使用同一方式恢复两天前和一天前的数据备份, 同样不能启动项目, 排除数据内容的原因
    使用mysqldump和导出SQL文件两种方式, 恢复一天前的数据, 同样不能启动项目, 排除恢复方式的原因

    以上方式基本是运维人员参与, 等技术总监参与观察项目报错后, 猛然发现是表名大小写的问题, 通过测试最终确定原因:
    使用rpm包安装数据库, 自动初始化时将lower_case_table_names设置为0, 表名大小写敏感, 数据库中为小写, 代码中为大写

    3 解决方案

    4 总结

    MySQL8.0及以上版本, 只能在初始化的时候设置lower-case-table-names参数, 无法通过修改my.cnf实现(在my.cnf中增加配置会报错)

    初始化数据库不需要卸载整个MySQL重装, 只需要使用mysqld命令即可

    base_dir等用户组应为mysql, linux下命令为:

    chown -R mysql.mysql MySQL数据路径(即base_dir)

    linux下递归创建目录

    mkdir -p mysql/lib/mysql-files

    MySQL重新初始化

    mysqld -initialize --lower-case-table-names=1
    

    MySQL8.0以上, 需要先创建用户再赋权

    create user 'test'@'%' identified by 'test';
    -- with option 可以把权限赋予其它用户
    grant all privileges on test.* to 'test'@'%' with option;

    到此这篇关于详解记录MySQL中lower_case_table_names的坑的文章就介绍到这了,更多相关MySQL lower_case_table_names内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • 详解关于MySQL 8.0走过的坑
    • 升级到MySQL5.7后开发不得不注意的一些坑
    • 浅谈mysql8.0新特性的坑和解决办法(小结)
    • MySQL中NOT IN填坑之列为null的问题解决
    • MySQL 5.7临时表空间如何玩才能不掉坑里详解
    • Mysql 5.7.19 免安装版遇到的坑(收藏)
    • mysql 8.0.18 压缩包安装及忘记密码重置所遇到的坑
    • 分享MySql8.0.19 安装采坑记录
    上一篇:详解mysql查询缓存简单使用
    下一篇:mysql-canal-rabbitmq 安装部署超详细教程
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    详解记录MySQL中lower_case_table_names的坑 详解,记录,MySQL,中,lower,