MYSQL库中表名忽略大小写设置的影响

前不久,对mysql的lower_case_table_names参数有点小小的疑问:

1.lower_case_table_names是表名忽略大小写还是所有对象(字段、索引等)都忽略大小写?

2.区分大小写环境里的表(含大写、小写)迁移到不区分大小写环境里面会怎么样?

3.不区分大小写环境里的表(含用大写、小写表名语句建的表)迁移到区分大小写环境里面又会怎样

4.lower_case_table _names设置为什么值较好?

于是做了针对这些问题做了个小小的实验,先附实验结论。

实验结论:

1、lower_case_table_names只作用表名,不作用字段名(字段名大小写均可查出结果);

2、在不区分大小写环境,大写建表语句均会转化为小写表名;使用大写表名可以定位到表(表名大小写无区别,均会转化为小写),在不区分大小写环境表迁移到区分大小写环境,表名均为小写;

3、在区分大小写环境,大写表名建表语句所建表名为大写,使用小写表名建表语句所建表名为小写,在区分大小写环境中的大写表迁移到不区分大小写环境,之前所建大写表名表报不存在错误!

4、综和2、3实验结论,建议将该参数值设置为1,即:表名不区分大小写

附:

今天就碰到修改一个测试环境的lower-case-table-name=1;导致大写表名查询不了。

解决方式:重建表

时间: 2024-10-24 13:28:09

MYSQL库中表名忽略大小写设置的影响的相关文章

linux下MySQL表名忽略大小写设置

最近公司项目的MySQL数据库要迁移到linux下,部署时日志总是显示报找不到一个表,用MYSQL查看明明有这个表.后来经百度,原来LINUX下的MYSQL默认是区分表名大小写的. 用命令查看当前是否区分大小写: ***************************************mysql> show variables like "%case%"; +------------------------+-------+| Variable_name          

【MySql】linux下,设置mysql表名忽略大小写

[障碍再现] 状况描述01: 在LINUX下调一个程序经常报出找不到表,但是我明明是建了表的, 测试的时候,遇到一些问题,从Windows平台访问虚拟机中的Web应用,经常报出找不到表,但自己明明在数据库中看到相关的数据表和数据,在linux中通过MYSQL的命令行下也可以查到,为什么从Windows平台上的程序来访问虚拟机中的MySql时,就找不到呢? [原因分析] 原来是LINUX下的MYSQL默认是要区分表名大小写的,而在windows下是不区分. 从windows下导出的数据脚本中数据表

mysql表名忽略大小写配置

linux下mysql默认是要区分表名大小写的.mysql是否区分大小写设置是由参数lower_case_table_names决定的,其中:1)lower_case_table_names = 0 区分大小写(即对大小写不敏感),默认是这种设置.这样设置后,在mysql里创建的表名带不带大写字母都没有影响,都可以正常读出和被引用. 2)lower_case_table_names = 1 不区分大小写(即对大小写敏感).这样设置后,表名在硬盘上以小写保存,MySQL将所有表名转换为小写存储和查

mysql表名忽略大小写

查看大小写区分mysql> show variables like "%case%";+------------------------+-------+| Variable_name          | Value |+------------------------+-------+| lower_case_file_system | OFF   | | lower_case_table_names | 0     | +------------------------+-

mysql linux下表名忽略大小写注意事项

在Unix中使用lower_case_tables_name=0,在Windows中使用lower_case_tables_name=2.这样了可以保留数据库名和表名的大小写.不利之处是必须确保在Windows中查询总是用正确大小写引用数据库名和表名.如果将查询转移到Unix中,由于在Unix中大小写很重要,如果大小写不正确,它们不工作.例外:如果你正使用InnoDB表,在任何平台上均应将lower_case_tables_name设置为1,以强制将名转换为小写.请注意在Unix中将lower_

Linux系统下不让MySQL区分表名的大小写的解决办法

问题描述: 今天将某项目数据库移植到liunix服务器上,结果出现无法找到表的错误,查询数据库,表确实是存在的.经过分析比较,发现是表名大小写问题导致. 问题分析: MySQL数据库的表名在Linux系统下是严格区分大小写的,在Windows系统下开发的程序移植到Linux系统下,如果程序中SQL语句没有严格按照大小写访问数据库表,就可能会出现找不到表的错误. 解决办法: 修改MySQL的配置文件my.cnf,在[mysqld]部分添加如下配置选项lower_case_table_names =

关于各种数据库中表名的大小写

关于数据库表名的大小写 刚刚同事问了我一个HighGoDB 连接 Oracle的问题.大概是在HighGoDB连接Oracle时用的是小写的table名称,导致在Oracle找不到该表. 我引申写一下,各种database table名称大小写的处理: Oracle :create table abc (***)成功之后,oracle 数据字典中存放的是ABC.即:除非特别声明,oracle 数据字典中存放的是转为大写后的表名. Sybase ASE:默认就是区分大小写.所以user.lei 和

MySQL查询所有库中表名

select table_name from information_schema.tables where table_schema='contract_ggpt' and table_type='base table' 原文地址:https://www.cnblogs.com/lixx/p/8432169.html

python脚本统计 MySQL 库中表的个数

#!/usr/bin/python import os,sys,pymysql mysqlbase = '/usr/local/mysql/bin/' if  len(sys.argv)  == 1:    print('format: python + Script_name + user + password + ip')elif sys.argv[1] == '-h':    print('format: python + Script_name + user + password + i