Linux下部署MySQL,大小写敏感踩坑记录
今天在将开发环境中的门户数据库复制到新环境后,使用SqlSugar的ORM框架进行数据库操作的时候,出现了主键找不到的现象。排查了很久终于发现了关键点。特此记录。
1.开发环境:
操作系统:CENTOS7 64位
内存: 1GB
CPU 1/1
网络适配器:网桥模式
安装模式:最小化安装
系统语言设置:zh_CN.gb2312
数据库版本:MySQL 5.6.29 binary 模式安装
建立数据库之前:my.cnf参数配置
character-set-server = utf8
log-bin=mysql-bin
skip-name-resolve
lower_case_table_names = 0 #之后可能设置过1的现象
开发数据库实例名称:GoodMES_P_V0_5
数据库实例中表名称,列名称 全部大写
具体还经过哪些设置暂时不记得了,但是最终的结果是,不论sql语句中表名称大小写,都能查到数据。根据推测,数据库大小写也都能认识。对数据库的操作是DOS.ORM
2.这次的部署环境:
操作系统:CENTOS7 64位
内存: 1GB
CPU 1/1
网络适配器:网桥模式
安装模式:最小化安装
系统语言设置:zh_CN.UTF-8
数据库版本:MySQL 5.6.29 binary 模式安装
数据库实例名称:G_START
数据库实例中表名称,列名称 全部大写
使用SqlSugar的ORM框架进行数据库操作的时候,出现了主键找不到的现象。通过记录mysql日志信息,得到数据库操作记录信息,发现SqlSugar的ORM框架对数据库的操作之前,必然都会将实体名称,表名称,列名称全部转换成大小写。然而由于mysql默认设置的是大小写敏感,故而找不到主键信息。同时针对需要主键信息来进行处理的内容,都会存在问题,因为SQLSugar的InSingle操作或者其他的针对主键的操作,都会进行一个获取主键的动作,而这个获取主键的动作是通过
select DISTINCT TABLE_NAME as tableName,COLUMN_NAME as keyName from INFORMATION_SCHEMA.COLUMNS where table_name='" + tableName + "' AND COLUMN_KEY='PRI'这个SQL语句来获取的,虽然这里的tableName传入是正确的是表名称,但是由于是被转换成了小写,所以这里是查不到数据的。从而导致了找不到主键的情况(SQLSugar框架的坑还是大部分数据库操作框架的坑?)。
查阅网上信息,说可以通过设置lower_case_table_names这个数据库的参数来进行设置,设置了lower_case_table_names=1(大小写不敏感)一个更严重的问题出现了,因为数据库实例的名称也是大写的。但是SQLsugar同样的进行了小写化操作。所以数据库仍然是找不到的,同样的mysql客户端在选择该数据库的时候,也出现了数据库未找到的情况。
查询mysql官网,lower_case_table_names有第三个参数:
0:默认值,大小写敏感;请注意如果在大小写不敏感的文件系统上用--lower-case-table-names=0强制设为0,并且使用不同的大小写访问MyISAM表名,会导致索引破坏。
1:表名在硬盘上以小写保存,名称对大小写不敏感。MySQL将所有表名转换为小写以便存储和查找
2:表名和数据库名在硬盘上使用CREATE TABLE或CREATE DATABASE语句指定的大小写进行保存,但MySQL将它们转换为小写以便查找。(这个操作需谨慎,因为一旦这样设置了,那么实际上就变成了表里不一的情况,查找问题就比较难了。)
很明显我的目的是否能实现的最终拍板权还是文件系统,无论我怎么设置大小写敏感还是大小写不敏感,都无法对数据库进行操作。区别点在于一个是能连接到数据库,一个是连数据库都找不到了。
所以我的最终结果是:
1.设置数据库大小写不敏感
2.重新配置一个实例:实例名称小写
3.将开发环境中的数据表导出一份
4.将表结构导入到部署环境,你会发现导入后的表名都变成了小写。但是表中的列的名称仍然是大写。
结论:在windows下MySQL数据库中实例,表,列的名称都是大小写不区分的,随意折腾。但是到了类Unix系统,比如Ubuntu,CentOS,那么在部署数据库之前必须要谨慎考虑,是需要大小写敏感还是大小写不敏感。数据库中实例,表,列名称的命名是要用大写的还是小写的。万一处理不好,最糟糕的可能就是数据库重建。耗时耗力,还吃力不讨好。
建议:命名全部小写;建议区分大小写。一旦设定,则不建议修改数据库设置。同时在应用时选择数据库操作框架的时候,需要谨慎考虑。了解底层对数据库的操作方式。
Linux下部署MySQL,大小写敏感踩坑记录的更多相关文章
- Linux下安装opencv(踩坑记录帖)
1.首先安装依赖项:sudo apt install build-essential sudo apt install build-essentialsudo apt install cmake gi ...
- Centos7下搭建gitbook环境踩坑记录
1.安装npm yum -y install npm 2.配置npm仓 npm config set registry https://mirrors.tencent.com/npm/ 3.安装git ...
- Win10自带Ubuntu子系统下Mysql安装踩坑记录
linux系统为win10自带Ubuntu子系统 错误的安装过程 我按照一般的方法安装mysql,安装步骤如下 1.升级源 $ sudo apt-get update 2.安装mysql $ sudo ...
- 在Linux下部署mysql时,使用group by碰到的问题
mysql使用group by 的时候报错,错误信息如下: 1055:ER_WRONG_FIELD_WITH_GROUP: Expression #2 of SELECT list is not in ...
- dell笔记本 win10 下安装 ubuntu16.04 踩坑记录
硬件配置情况: dell笔记本-灵越-5577 —— I5七代(带有集显),8G内存条DDR4,GTX1050,128G固态硬盘,1T机械硬盘. 固态硬盘划分为3部分,100GB给win10的C盘,1 ...
- 复杂业务下向Mysql导入30万条数据代码优化的踩坑记录
从毕业到现在第一次接触到超过30万条数据导入MySQL的场景(有点low),就是在顺丰公司接入我司EMM产品时需要将AD中的员工数据导入MySQL中,因此楼主负责的模块connector就派上了用场. ...
- CentOS7.4安装MySQL踩坑记录
CentOS7.4安装MySQL踩坑记录 time: 2018.3.19 CentOS7.4安装MySQL时网上的文档虽然多但是不靠谱的也多, 可能因为版本与时间的问题, 所以记录下自己踩坑的过程, ...
- ubuntu 下安装docker 踩坑记录
ubuntu 下安装docker 踩坑记录 # Setp : 移除旧版本Docker sudo apt-get remove docker docker-engine docker.io # Step ...
- linux下部署php项目-Apache、php、mysql关联
linux下部署php项目环境可以分为两种,一种使用Apache,php,mysql的压缩包安装,一种用yum命令进行安装. 使用三种软件的压缩包进行安装,需要手动配置三者之间的关系.apache和p ...
随机推荐
- rails 字符串 转化为 html
simple_format http://apidock.com/rails/v4.0.2/ActionView/Helpers/TextHelper/simple_format http://api ...
- Linux平台下贪吃蛇游戏的运行
1.参考资料说明: 这是一个在Linux系统下实现的简单的贪吃蛇游戏,同学找帮忙,我就直接在Red Hat中调试了一下,参考的是百度文库中"maosuhan"仁兄的文章,结合自己的 ...
- Data Structure Graph: prim
最小生成树算法.这里的s是可以随意选取的,不影响树的生成,但是不同的s有不同的dis #include <iostream> #include <vector> #includ ...
- python 常用的字符串方法
st = ' hello Kitty 'str = 'hello {name} {age}' #print(st.format(name='fadfa'))#常用的字符串方法print(st.coun ...
- Hadoop-HA配置详细步骤
1. HA服务器配置 对hdfs做高可用 1.1服务器详情 服务器:centos7 Hadoop:2.6.5 Jdk:1.8 共四台服务器 192.168.1.111 node1 192.168.1. ...
- Codeforces 180C Letter:dp
题目链接:http://codeforces.com/problemset/problem/180/C 题意: 给你一个字符串s,长度为n. 让你将这个字符串变成“前面一段都是大写字母,后面一段都是小 ...
- spring boot: Bean的初始化和销毁 (一般注入说明(三) AnnotationConfigApplicationContext容器 JSR250注解)
import org.springframework.context.annotation.AnnotationConfigApplicationContext; 使用AnnotationConfig ...
- adb命令(二)
1.获取手机型号指令 adb shell cat /system/build.prop | findstr "ro.product.model" 2.获取手机处理器信息 adb s ...
- mybatis学习第(二)天
Mybatis第二天 高级映射 查询缓存 关于与spring的整合和反转工程我偷懒了,下次看. 使用的sql: CREATE TABLE USER( id INT PRIMARY KEY A ...
- Cot
题目大意 两种操作 给坐标上一个直角三角形中每个整点权值$+1$ 求坐标上一个直角三角形中每个整点权值之和 题解 一顿分析思考加推导之后,发现并不存在这样的数据结构(大概是有,只是我不知道),于是考虑 ...