文档章节

linux下Mysq表名的大小写问题解析

aijfanta
 aijfanta
发布于 2016/04/16 16:48
字数 906
阅读 133
收藏 5

这些天把项目都转移到新的Linux服务器上来,发现总是报无法找到表的错误。

ssh进去mysql下:

然后发现卧槽有啊。。。

回来发现输出信息均为未找到“T_USER”大写字样。回来想可能是用mybatis写的原生SQL语句导致的。

所以查阅了资料发现:http://www.ahlinux.com/mysql/11302.html

更改linux下的mysql读取表的方式应该可以行得通。

所以按照文章进入my.cnf中去更改。

更改后发现问题解决了。

在linux系统中,mysql数据库的库名、表名、列名、别名大小写规则:
  1、数据库名与表名是严格区分大小写的;
  2、表的别名是严格区分大小写的;
  3、列名与列的别名在所有的情况下均是忽略大小写的;
  4、变量名也是严格区分大小写的;
 
MySQL在Windows下都不区分大小写。

因此,在不同操作系统中为了能使程序和数据库都能正常运行,最好的办法是在设计的时候都转为小写,但是如果在设计的时候已经规范化大小写了,那么在Windows环境下只要对数据库的配置做下改动就行了,具体操作如下:

在MySQL的配置文件中my.ini [mysqld] 中增加一行
  lower_case_table_names = 1
  参数解释:
  0:区分大小写
  1:不区分大小写
在 MySQL 中,数据库和表对就于那些目录下的目录和文件。因而,操作系统的敏感性决定数据库和表命名的大小写敏感。这就意味着数据库和表名在 Windows 中是大小写不敏感的,而在大多数类型的 Unix 系统中是大小写敏感的。

奇怪的是列名与列的别名在所有的情况下均是忽略大小写的,而表的别名又是区分大小写的。

要避免这个问题,你最好在定义数据库命名规则的时候就全部采用小写字母加下划线的组合,而不使用任何的大写字母。

或也可以强制以 -O lower_case_table_names=1 参数启动 mysqld(如果使用 --defaults-file=...\my.cnf 参数来读取指定的配置文件启动 mysqld 的话,你需要在配置文件的 [mysqld] 区段下增加一行 lower_case_table_names=1)。

这样MySQL 将在创建与查找时将所有的表名自动转换为小写字符(这个选项缺省地在 Windows 中为 1 ,在 Unix 中为 0。从 MySQL 4.0.2 开始,这个选项同样适用于数据库名)。

当更改这个选项时,必须在启动 mysqld 前首先将老的表名转换为小写字母。

即如果希望在数据库里面创建表的时候保留大小写字符状态,则应该把这个参数置0: lower_case_table_names=1 。
否则,同样的sqldump脚本在不同的操作系统下最终导入的结果不一样(在Windows下所有的大写字符都变成小写了)。
 
问题:
在LINUX下调一个程序总提示找不到表,明明是建了表的,在MYSQL的命令行下也可以查到,为什么程序就找不到表呢?

原来是LINUX下的MYSQL默认是要区分表名大小写。

让MYSQL不区分表名大小写的方法:
1,用ROOT登录,修改/etc/my.cnf
2,在[mysqld]下加入一行:lower_case_table_names=1
3,重启mysql数据库,使配置生效:service mysqld restart


本文转载自:http://www.ahlinux.com/mysql/11302.html

共有 人打赏支持
aijfanta
粉丝 5
博文 18
码字总数 3619
作品 0
程序员
【mark】centos下,更改mysql数据库表名大小写敏感

Linux下mysql安装完后是默认:区分表名的大小写,不区分列名的大小写; root登录,修改/etc/my.cnf,在末尾添加一行:lowercasetablenames=1 lowercasetablenames参数: 0为敏感,1为不敏感。...

youway
2014/10/13
0
0
解决mysql数据库大小写敏感问题

今天在部署java项目到linux服务器上去的时候出现了个小问题,数据库是mysql,项目在我本地(windows环境下)是没问题的。错误信息:2012-09-06 00:01:29,314 INFO [org.springframework.jdbc....

java_T
2012/09/06
0
4
CentOS下无法正常获取MySQL数据库表数据的问题

之前,由于客户要求在centOS下安装系统应用,因此有机会接触了一下CentOS,顺便也了解了下CentOS的常规操作,还有在CentOS下的MySQL相关操作。 目前技术框架使用JSF(richfaces、facelets)+...

晨曦之光
2012/03/09
0
0
由mysql表名大小写所知道

今天遇到一个问题是: 在mysql手动创建数据库表(大写表名,小写字段名)后,启动项目后发现,hibernate又给我生成了一个小写的同结构表,猜想到会不会是mysql表名区分大小写后,google一下,...

wayne很忙
2013/02/26
0
0
Mycat连接数据库之后导致表名全小写的问题分析研究

初步研究:通过部署发现在Mycat中部署逻辑表表名大小写混合时,在Mycat连接后出现全变小。容易造成错误逻辑表(按混合表名创建物理表); 可能拯救的方法: 1、Linux下部署安装MySQL,默认不...

easonjim
2017/08/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Shell特殊符号总结以及cut,sort,wc,uniq,tee,tr,split命令

特殊符号总结一 * 任意个任意字符 ? 任意一个字符 # 注释字符 \ 脱义字符 | 管道符 # #号后的备注被忽略[root@centos01 ~]# ls a.txt # 备注 a.txt[root@centos01 ~]# a=1[root@centos01...

野雪球
26分钟前
1
0
OSChina 周二乱弹 —— 程序员圣衣

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文:分享Skeeter Davis的单曲《The End of the World》 《The End of the World》- Skeeter Davis 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
41分钟前
4
0
[ python import module ] 导入模块

import moudle_name ----> import module_name.py ---> import module_name.py文件路径 -----> sys.path (这里进行查找文件) # from app.web import Personimport app.web.Person as Pe......

_______-
昨天
3
0
Redis性能问题排查解决手册

一、性能相关的数据指标 通过Redis-cli命令行界面访问到Redis服务器,然后使用info命令获取所有与Redis服务相关的信息。通过这些信息来分析文章后面提到的一些性能指标。 nfo命令输出的数据可...

IT--小哥
昨天
1
0
mixin混入

①新建mixin.js文件 const mixin = { methods: { /** * 分页公共方法 */ handleSizeChange(val) { this.pageData.size = val; this.query(); }, hand......

不负好时光
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部