`

Windows和Linux系统下面MySQL的大小写敏感性不同

阅读更多

同样的建表脚本,在windows下所有的表名都成了小写的了,在建表脚本中,本来"goalsgroup"是"goalsGroup",可是用脚本建表 后就全成了小写了;在linux下用这个脚本建表则保持了表名的大小写状态。另外,列名在windows下和linux都能够区分大小写。
我的建表脚本如下:


use learndiarydb;
                                                                               
DROP TABLE IF EXISTS `goalsGroup`;
CREATE TABLE `goalsGroup` (
  `groupID` tinyint(2) unsigned NOT NULL auto_increment,
  `groupName` varchar(60) NOT NULL,
  `writeDate` datetime default NULL,
  `lastUpdate` datetime default NULL,
  `goalsNum` tinyint(2) unsigned NOT NULL default '0',
  `groupPriority` tinyint(1) unsigned NOT NULL default '0',
  PRIMARY KEY  (`groupID`)
) TYPE=InnoDB;



在windows下的表名和列名:

mysql> show tables;
+------------------------+
| Tables_in_learndiarydb |
+------------------------+
| article                |
| emailresetpsd          |
| forbid                 |
| goalsgroup             |
| user                   |
| usergoal               |
| usermailgoal           |
+------------------------+
7 rows in set (0.09 sec)
 
mysql>


mysql> describe goalsgroup;
+---------------+---------------------+------+-----+---------+----------------+
| Field         | Type                | Null | Key | Default | Extra          |
+---------------+---------------------+------+-----+---------+----------------+
| groupID       | tinyint(2) unsigned |      | PRI | NULL    | auto_increment |
| groupName     | varchar(60)         |      |     |         |                |
| writeDate     | datetime            | YES  |     | NULL    |                |
| lastUpdate    | datetime            | YES  |     | NULL    |                |
| goalsNum      | tinyint(2) unsigned |      |     | 0       |                |
| groupPriority | tinyint(1) unsigned |      |     | 0       |                |
+---------------+---------------------+------+-----+---------+----------------+
6 rows in set (0.09 sec)
 
mysql>

********************************************************************

在linux下的表名和列名:

mysql> show tables;
+------------------------+
| Tables_in_learndiarydb |
+------------------------+
| article                |
| emailresetpsd          |
| forbid                 |
| goalsGroup             |
| user                   |
| usergoal               |
| usermailgoal           |
+------------------------+
7 rows in set (0.01 sec)
 
mysql>


mysql> describe goalsGroup;
+---------------+---------------------+------+-----+---------+----------------+
| Field         | Type                | Null | Key | Default | Extra          |
+---------------+---------------------+------+-----+---------+----------------+
| groupID       | tinyint(2) unsigned |      | PRI | NULL    | auto_increment |
| groupName     | varchar(60)         |      |     |         |                |
| writeDate     | datetime            | YES  |     | NULL    |                |
| lastUpdate    | datetime            | YES  |     | NULL    |                |
| goalsNum      | tinyint(2) unsigned |      |     | 0       |                |
| groupPriority | tinyint(1) unsigned |      |     | 0       |                |
+---------------+---------------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)
 
mysql>


******************************************************************

下面是网上一篇相同问题的blog,转自:http://www.zeali.net/entry/364

MySQL的大小写敏感性
zeal 2006-04-27 17:43 于 开发/理论 , 679 字 |  + 0 - 1   English
Made In Zeal 转载请保留原始链接:http://www.zeali.net/entry/364
关键字: mysql,lower_case_table_name,大小写

在 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下所有的大写字符都变成小写了)。

分享到:
评论

相关推荐

    有关MySQL8.0大小写敏感的问题

    MySQL 8.0作为MySQL数据库的重要版本更新,引入了一系列的新特性与优化改进,其中包括对数据库和表名大小写敏感性的调整。这一变化对于新老用户来说都需要一定的适应期,尤其是那些在早期版本中习惯于特定大小写行为...

    mysql大小写敏感

    MySQL 中的大小写敏感性是指数据库名、表名、列名、别名等在不同的操作系统平台上的大小写规则。 MySQL 在 Linux 下默认情况下是严格区分表名和数据库名的大小写,而在 Windows 下则不区分大小写。 在 Linux 下,...

    LINUX系统下mysql的大小写区分问题.docx

    需要注意的是,尽管可以通过这些方法来控制大小写敏感性,但最佳实践是始终以一种一致的方式编写数据库对象的名称,避免因大小写问题引发的混淆和错误。在开发和维护过程中,保持命名规范和一致性至关重要,尤其是当...

    教你如何在windows与linux系统中设置MySQL数据库名、表名大小写敏感

    MySQL大小写敏感可以通过配置文件的lower_case_table_names参数来控制。 WINDOWS: 编辑MySQL安装目录下的my.ini 文件,在[mysqld]节下 添加 lower_case_table_names=0 (备注:为0时大小写敏感,为1时大小写不敏感...

    MySQL的SQL语句大小写不敏感问题解决方案

    MySQL 的 SQL 语句大小写不敏感问题是一个普遍存在的问题,特别是在 Linux 和 Windows 两种操作系统下。这个问题的产生是由于 MySQL 在不同的操作系统下对大小写的处理规则不同。在 Linux 下,数据库名、表名、列名...

    linux mysql中的坑

    ### Linux MySQL 中的大小写敏感性问题解析及解决方法 #### 背景与问题描述 在进行软件开发过程中,可能会遇到这样的问题:原本在本地Windows环境下运行良好的MySQL数据库应用程序,一旦部署到Linux服务器上,就...

    Mysql大小写敏感的问题

    总结来说,MySQL的大小写敏感性主要取决于操作系统、数据库配置和字符集选择。在跨平台操作时,确保了解并调整这些设置以避免可能出现的问题。同时,理解BINARY关键字和字符集的影响,可以帮助你在必要时精确控制大...

    MySQL数据库大小写敏感的问题

    MySQL数据库在处理数据库名、表名以及列名时的大小写敏感性问题是一个常见的困扰,尤其是在跨不同操作系统环境时。MySQL的行为受所运行的操作系统的影响,因为数据库名和表名实际上对应于数据目录中的文件名。在...

    数据库区分大小写的设置

    本文将深入探讨SQL Server与MySQL这两种主流数据库管理系统中关于大小写敏感性的设置。 #### SQL Server 大小写敏感性设置 SQL Server默认情况下对标识符(例如表名、列名等)是不区分大小写的。然而,在某些场景...

    0积分:MySql表名大小写的问题.txt

    ### MySQL表名大小写敏感性问题详解 #### 标题:0积分:MySql表名大小写的问题 #### 描述:MySql表名大小写的问题 #### 标签:mysql 大小写 #### 部分内容摘要: > 在MySQL环境中,表名的大小写敏感性是一个常见...

    MySql下实现查询表名不区分大小写

    在MySQL数据库管理中,表名和数据库名的大小写敏感性是一个重要的配置选项,尤其是在不同操作系统环境下。在Linux系统中,默认情况下,MySQL是严格区分大小写的,这与Windows环境下的行为形成鲜明对比,后者默认不...

    linux下安装mysql5.5

    关于字符集和大小写敏感性,你可以在`my.cnf`中进行设置。在`[client]`和`[mysql]`部分添加如下内容: ```bash [client] default-character-set=utf8 [mysql] character-set-server=utf8 ``` 在`[mysqld]`部分添加...

    mysql表名忽略大小写配置方法详解

    在Linux系统中,默认情况下,MySQL是区分大小写的,这可能会给开发和维护带来不便,尤其是对于那些习惯于不区分大小写环境的开发者。然而,通过调整配置参数`lower_case_table_names`,你可以改变这一行为。 `lower...

    Mysql数据库名和表名在不同系统下的大小写敏感问题

    MySQL 数据库系统在处理数据库名和表名的大小写敏感性方面存在差异,这主要取决于运行 MySQL 的操作系统。在讨论这一主题之前,首先要明白一点,MySQL 的设计遵循了 ANSI SQL92 规范,但对某些标准进行了扩展,其中...

    MySQL大小写敏感导致的问题分析

    在MySQL中,数据库名、表名和字段名的大小写敏感性主要受`lower_case_table_names`系统变量影响。这个变量决定了MySQL如何处理大小写,其值可以是0、1或2。 1. 当`lower_case_table_names`设置为0时(如在Linux上...

    linux中安装mysql教程.docx

    记住,MySQL的大小写敏感性取决于文件系统,所以在Linux中表名区分大小写。如果需要大小写不敏感,需要调整数据存储引擎的设置,如InnoDB的表空间配置。希望这些信息能帮助你在Linux上顺利安装和配置MySQL。如果有...

    MySQL修改配置 区分大小写

    然而,根据业务需求,有时我们需要让MySQL对这些名称进行大小写敏感的处理,例如在开发多语言应用或者遵循严格的命名规范时。在标题和描述中提到的方法就是用来调整MySQL服务器的这一行为,使其变为区分大小写。 ...

Global site tag (gtag.js) - Google Analytics