MySQL8 设置大小写敏感

问题描述

今天对我本地的数据库迁移服务器上,完成之后启动项目报错

在这里插入图片描述

说数据库中不存在 quartz_LOCKS 这张表

在这里插入图片描述

我打开服务器上面的数据上面展示的表名是 quartz_LOCKS,然后通过查询 lower_case_table_names 配置可知

show variables like 'lower_case_table_names';

在这里插入图片描述

lower_case_table_names=0,表示 表名区分大小写,且按照用户指定存储

lower_case_table_names 各参数含义:

  • 0:表名区分大小写,且按照用户指定存储
  • 1:表不区分大小写,使用小写存储
  • 2:表不区分大小写,按照用户指定存储

按理说只要将 lower_case_table_names 的值设置为 1 或者 2 就行了

接着我去修改了服务器上 my.cnf (或者 my.ini)文件

在这里插入图片描述

添加以下配置:

[mysqld]  
lower_case_table_names = 1

在这里插入图片描述

接着再重启 mysql

# 重启 mysql
systemctl restart mysqld

在这里插入图片描述

mysql 启动失败


原因分析:

根据提示使用 systemctl status mysqld.service 命令显示 mysqld.service 的状态信息,

在这里插入图片描述

退出状态码为 1,这通常意味着在启动过程中遇到了某种错误,为了确定具体的错误原因,查看更详细的日志

# 查询 mysql 日志
sudo tail -n 100 /var/log/mysqld.log

在这里插入图片描述

从日志上说明 MySQL 服务器启动失败的原因是 lower_case_table_names 的设置不一致。MySQLlower_case_table_names 配置项决定了表名在存储和比较时是否应该转换为小写,这个设置必须在服务器和数据字典之间保持一致,否则服务器将无法正确启动

[ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server ('1') and data dictionary ('0').

指出服务器期望 lower_case_table_names 设置为 1(意味着表名在存储和比较时应转换为小写),但是数据字典(即已有的数据库表元数据)的 lower_case_table_names 设置是 0(意味着表名区分大小写)

mysqld.log 日志文件打印的信息来看,导致 Mysql 启动失败的原因就是因为设置了 lower_case_table_names=1 这个参数,之前在本地使用的 Mysql5.7 版本的,而服务器上面的 Mysql 版本确是 8.0

查看 Mysql 官方文档可知

lower_case_table_names can only be configured when initializing the server.
Changing the lower_case_table_names setting after the server is initialized is prohibited.

Mysql-8.0 版本时,lower_case_table_names 变量是一个系统变量,它只能在 MySQL 服务器初始化时设置,并且一旦服务器初始化完成,就不应该再更改这个设置。这是因为在 MySQL 的数据字典和文件系统层面,这个设置影响到了表名和目录名的大小写敏感性和转换规则。如果在服务器运行时改变这个设置,可能会导致数据不一致和其他严重问题


解决方案:

通过分析可知 Mysql8 在初始化之后是不能修改 lower_case_table_names 这个参数的

那要解决这个问题有两种方案,要么就是更改现有的表明,要么就初始化数据库,更改配置

  • 方案一

如果你的表比较少的话,可以通过 RENAME TABLE 语句来更改它们,例如:将 my_table 更新为 MY_TABLE

RENAME TABLE my_table TO MY_TABLE;

但是,如果你有很多表需要更改,这种方法可能会很繁琐

也可以编写一个脚本来查询数据库中的所有表名,并自动为它们生成 RENAME TABLE 语句,然后执行这些语句来更改表名

  • 方案二

初始化数据库,再更改 lower_case_table_names 配置,在初始化数据时,需要清空数据库中所有的数据并恢复到初始状态,所以务必做好数据备份

在初始化数据库时需要先将数据库关闭

# 关闭 mysql
systemctl stop mysqld

Mysql 数据库的数据库存储在 /var/lib/mysql 下,在重新初始化数据库之前,需要删除现有的数据目录

sudo rm -rf /var/lib/mysql

在这里插入图片描述

注意:此操作不可逆,务必做好数据备份

再重新创建一个新的数据目录

sudo mkdir /var/lib/mysql

在这里插入图片描述

授权 Mysql 对于 /var/lib/mysql 目录的所有权

sudo chown -R mysql:mysql /var/lib/mysql

在这里插入图片描述

初始化数据库

sudo mysqld --initialize

在这里插入图片描述

到此为止初始化的步骤已经完成,接着就去修改 /etc/my.cnf 文件中的 lower_case_table_names 配置

在这里插入图片描述

在 /var/log/mysqld.log 这个文件中查找 Mysql 的密码

cat /var/log/mysqld.log

在这里插入图片描述

rtAVCTaNg0*b

再启动 Mysql

# 启动 mysql
systemctl start mysqld

在这里插入图片描述

连接 Mysql

# 连接 MySQL 
mysql -u root -p

在这里插入图片描述

修改 root 密码

ALTER  USER  'root'@'localhost'  IDENTIFIED BY 'password';

在这里插入图片描述

再通过以下命令查看下 lower_case_table_names 的值是否为你所设置的

show variables like 'lower_case_table_names';

在这里插入图片描述

可以看到已经成功修改为 1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/741913.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kamailio的SIP服务的性能

官方的性能报告: Kamailio (OpenSER) 1.2.0 - Transaction Module and User Location Performance Tests 如下的提取的性能参数也是基于官方的性能报告,信令走的UDP,作为做系统方案的参照,Kamailio的性能还是非常,非常…

leetcode代码记录(盛最多水的容器

目录 1. 题目:2. 我的代码:小结: 1. 题目: 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以…

突破编程_C++_STL教程( multiset 的基础知识)

1 std::multiset 概述 std::multiset 是 C STL&#xff08;标准模板库&#xff09;中的一个容器&#xff0c;它定义在头文件<set>中。std::multiset 是一个多重集合容器&#xff0c;允许存储重复的元素键值&#xff0c;并且这些元素键值按照特定的严格弱排序准则进行排序…

幸运数字(蓝桥杯23省赛)

幸运数字&#xff08;蓝桥杯23省赛&#xff09; 题目分析 暴力判断的思路就不讲了&#xff0c;这道题主要想将一个思想&#xff0c;对于这种数字类的题目&#xff0c;对半枚举的思路。 100000000是不符合要求的&#xff0c;所以最多遍历到99999999。这个思路是我一半一半的凑…

【Hibernate-Validate】常用注解

常用注解: NotNull:被注释的元素(任何元素)必须不为 nul, 集合为空也是可以的。NotEmpty:用来校验字符串、集合、map、数组不能为null或也不能为空(字符串传入空格也不可以)(集合需至少包含一个元素)NotBlank:被注释的字符串的必须非空&#xff0c;空格也不行&#xff0c;空字…

Unity3D 动态生成场景管理节点详解

前言 Unity3D 提供了丰富的功能和工具&#xff0c;可以帮助开发者快速高效地创建各种类型的游戏。在游戏开发过程中&#xff0c;有时候我们需要动态生成场景管理节点来管理游戏场景中的各种元素&#xff0c;比如角色、道具、敌人等。本文将详细介绍如何在Unity3D中动态生成场景…

来吧伙计们,让AI教我们怎么说海盗语

“如果想伺机而动&#xff0c;就是这样。”——杰克船长提到海盗&#xff0c;我们往往联想到约翰尼德普在《加勒比海盗》中饰演的杰克船长。我们有什么理由不喜欢海盗呢&#xff1f;他们航行在海上&#xff0c;寻找埋藏的宝藏&#xff0c;痛饮朗姆酒&#xff0c;用自己独特的海…

FreMIM:傅里叶变换与遮罩的图像建模在医学图像分割中的应用

代码链接&#xff1a;GitHub - Rubics-Xuan/FreMIM: This repo holds the official code for the paper "FreMIM: Fourier Transform Meets Masked Image Modeling for Medical Image Segmentation". 论文链接&#xff1a;https://arxiv.org/abs/2304.10864 收录于…

差旅补助解决方案|数字化差补赋能业务提效

长期以来&#xff0c;差旅补助一直是企业为了激励员工出差并表达对员工的关怀而采取的一种方式&#xff0c;以经济和福利支持来鼓励员工积极投入工作。然而&#xff0c;由于传统差旅补助的核算、发放和管理方式存在诸多问题&#xff0c;往往适得其反&#xff0c;无法实现企业的…

RocketMQ 面试题及答案整理,最新面试题

RocketMQ的消息存储机制是如何设计的&#xff1f; RocketMQ消息存储机制的设计原理&#xff1a; 1、CommitLog文件&#xff1a; 所有的消息都存储在一个连续的CommitLog文件中&#xff0c;保证了消息的顺序写入&#xff0c;提高写入性能。 2、消费队列&#xff1a; 为每个主…

web前端练习一

1.电子汇款单 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>电子汇款单</title> </head> <body><h2>工商银行电子汇款单</h2><table border"1px">&…

C语言自学笔记10----C语言数组

C 语言数组 数组是可以存储多个值的变量。例如&#xff0c;如果要存储100个整数&#xff0c;则可以为其创建一个数组。 示例 int data[100]; 例如&#xff0c; float mark[5]; 在这里&#xff0c;我们声明了一个浮点类型的数组mark。其大小为5。意味着&#xff0c;它可以容纳5个…

MySQL row_number()函数,rank()函数和dense_rank()函数

从MySQL8.0开始引用row_number(), rank()函数和dense_rank()函数&#xff0c;也就是常见的窗口函数&#xff0c;三个函数都是一种用于计算排名的工具&#xff0c;它们根据指定的列对结果集进行排序&#xff0c;并为每一行分配一个排名值&#xff08;1,2,3,...&#xff09;。 函…

【漏洞复现】网康科技 NS-ASG 应用安全网关 SQL注入漏洞(CVE-2024-2330)

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

CoSaMP算法实现压缩感知的MATLAB实现

CoSaMP(Compressive Sampling Matching Pursuit)算法是一种基于稀疏表示的信号重构算法,它是对OMP(Orthogonal Matching Pursuit)算法的改进。CoSaMP算法在信号重构和压缩感知领域有着广泛的应用,特别是在处理稀疏信号时表现出色。 基本定义 下面是对CoSaMP算法的详细解…

(自用笔记)每天一点vue3—— echarts横坐标刻度标签显示不完全的问题

我是想做一个vue3echarts的账单数据展示项目&#xff0c;因为有vue2的基础&#xff0c;打算直接在这个项目上熟悉掌握vue3的新特性。这系列笔记就按照遇见问题解决问题的思路更新&#xff0c;不按照官方快速上手的章节&#xff0c;特此说明。 echarts 上次遗留一个横坐标刻度标…

strcat函数

函数理解记忆&#xff1a;str表示是<string.g>中的函数&#xff0c;cat表示附加。意思是将一个字符串的内容附加到另一个字符串的末尾。 注意要点&#xff1a;既然要附加&#xff0c;附加的字符串和被附加的字符串都要有\0。否则不知道附加多少&#xff0c;不知附加在哪…

Jtti:如何在CentOS中安装和配置Tomcat应用服务器

在CentOS中安装和配置Tomcat应用服务器非常简单&#xff0c;以下是一种基本的步骤&#xff1a; 步骤 1: 安装Java 首先&#xff0c;确保您的系统上已经安装了Java Development Kit (JDK)。Tomcat需要Java环境来运行。 sudo yum install java-devel 步骤 2: 下载和解压Tomcat 访…

免费视频背景素材下载

找免费视频素材、背景就上这6个网站&#xff0c;高质量&#xff0c;无版权可商用。 1、菜鸟图库 https://www.sucai999.com/video.html?vNTYwNDUx 菜鸟图库虽然是个设计素材网站&#xff0c;但除了设计类素材之外还有很多视频、音频、办公类等素材&#xff0c;视频素材就有上…

前端实现复制粘贴功能

在前端开发的世界里&#xff0c;复制粘贴功能就像是那个总是被忽视&#xff0c;却在关键时刻能救你一命的老朋友。我们习惯了用那些古老的魔法咒语&#xff08;document.execCommand(copy)&#xff09;来实现这一功能&#xff0c;但时代在进步&#xff0c;技术在更新&#xff0…