- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章详解记录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下命令为
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的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在尝试将 lower_case_table_name 值设置为 2,因为它是 Windows 服务器。但是当我启动 MySQL Workbench 并连接到我的服务器时,出现以下错误: A ser
我正在一台新的 Ubuntu 16.0.4 机器上安装新软件,并使用 apt-get 安装了 MySQL。我得到的版本是 5.7.22 但无法接受我对配置变量 lower_case_table_nam
我做了this为了能够创建大写的表,现在当我尝试更改、选择大写类或对大写类执行任何操作时,我遇到了一个错误,因为它正在寻找它的小写版本 SELECT cust_id FROM Customer LIM
我在 MySQL 5.6 中更改 lower_case_table_names 变量值时遇到问题 ...我做了所有在 Where to change the value of lower_case_t
我已经使用 yum 在 linux 中安装了 mysql v5.5.17,现在我想要默认的小写表名所以我添加了 set-variable = lower_case_table_names=1 在/et
我在 MySQL 5.6 中更改 lower_case_table_names 变量值时遇到问题 ...我做了所有在 Where to change the value of lower_case_t
来自的答案MySQL's lower_case_table_names won't change 对我来说毫无用处,因为我没有安装提到的那些附加工具(MySQL WorkBench 和独立的 MySQ
在 Windows 7 上运行 MYSQL 5.1。. .如何更改“lower_case_table_names”的服务器变量。需要将它设置为 0。我尝试使用 mysqld.exe 从命令提示符设置它
我正在尝试让 MySQL 在 Windows 10 上本地运行以进行开发。我的表名称中需要大写和小写字母。 我可以看到,在 Windows 中运行 MySQL 时,建议在 my.ini 中设置 low
我正在新的 Ubuntu 18.04 VM 上设置 MySQL 8.0,但我无法将变量 lower_case_table_names 设置为 1 。我试过像以前的版本一样更改/etc/mysql/my
我想在 MySQL 5.6 docker 容器中将变量 lower_case_table_names 设置为 1。 我把变量放在容器中/etc/mysql下的my.cnf文件[mysqld]中。 停止
我的操作系统是windows 7,mysql版本是5.6.20; 我打开my.ini,在[mysqld]下面添加lower_case_table_names=2作为一行,保存并退出; 通过 show
尝试在 MariaDB 中为 Travis-CI build设置小写表名称 addons: mariadb: '10.1' 我已经尝试过 - sudo sed -i '/\[mysqld\]/
在 MySQL 中,lower_case_table_names 全局变量决定表名写入磁盘时是否保留字母大小写,以及表名匹配是否区分大小写。根据the docs : If you are using
我使用的是 Windows 10。我试图创建一个名称中第一个字母大写的表格,例如:User,但我找不到包含 的文件lower_case_table_names 变量。 最佳答案 我知道这已经晚了两年,
我有一个运行数据库进行测试的测试 Linux 服务器,但我在本地使用 Windows。这意味着我的 lower_case_table_names 变量设置为 1,所以基本上我的表名区分大小写,而在 L
我们在 Amazon RDS 中有一个数据库实例和一个数据库。 (默认情况下它的 lower_case_table_names=0)。 现在我在同一实例中创建了另一个数据库。对于新站点,由于表名区分大
我在我的 Windows 7 64 位系统上安装了 MySql Workbench 6.2 和 MySql version 5.6。 我想在我的数据库名称和表名称中使用大写字母。所以我需要将变量 lo
我在linux ubuntu中使用mysql,我想在/etc/mysql/my.cnf文件中设置lower_case_table_names = 1。但是我插入变量后,mysql服务器无法启动。 o
我已将 mysql 服务器(版本:8.0)安装到 Linux 服务器中。 MySQL 数据库在 Linux 环境中是区分大小写的。 我在[mysqld]下添加“lower_case_table_nam
我是一名优秀的程序员,十分优秀!