gpt4 book ai didi

详解记录MySQL中lower_case_table_names的坑

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 28 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章详解记录MySQL中lower_case_table_names的坑由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

1 起因 。

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

2 问题分析 。

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

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

3 解决方案 。

  • 删除已初始化的数据库, 即base_dir, data_dir等
  • 重新初始化数据库, 将lower_case_table_names设置为1
  • 重新恢复备份数据

4 总结 。

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

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

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

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

linux下递归创建目录 。

 
1
mkdir -p mysql /lib/mysql-files

MySQL重新初始化 。

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

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

 
1
2
3
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内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。

原文链接:https://juejin.cn/post/6936167942329466893 。

最后此篇关于详解记录MySQL中lower_case_table_names的坑的文章就讲到这里了,如果你想了解更多关于详解记录MySQL中lower_case_table_names的坑的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com