MySQL 数据库大小写的问题

引言

后端开发,会时不时地和数据库打交道,mysql 数据库作为开源数据库,市场占有率相当高,很有研究和学习的价值。

在之前的博客中也提到了 mysql 数据库的一些常用的操作和介绍,在这里聊一聊数据库大小写的问题。mysql 开发过程中有可能会添加外键,遇到问题不妨先看看字段大小写是否匹配。

大小写规则

MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:

1、数据库名与表名是严格区分大小写的;

2、表的别名是严格区分大小写的;

3、列名与列的别名在所有的情况下均是忽略大小写的;

4、变量名也是严格区分大小写的。

MySQL在Windows下都不区分大小写。

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

在MySQL的配置文件中 my.ini [mysqld] 中增加一行

lower_case_table_names = 1

参数解释:

  • 0:区分大小写
  • 1:不区分大小写

实例说明

建立 usertable:

create table `usertable`( 
	 `id` varchar(32) binary,
 	PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

建立 mytable 并使用外键:

create table `mytable`( 
	 `id` varchar(32) binary,
	 `uid` varchar(32) binary,
 	 PRIMARY KEY (`id`),
 	 CONSTRAINT `user_1` FOREIGN KEY (`uid`) REFERENCES `usertable` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

如果在 mytable 表中,外键关联的时候 usertable 错误写成 “userTable” 或者其它形式,则会关联失败。

总结

由上可以看出大小写对 mysql 有很大的影响。开发过程中,应该尽量按大小写敏感的原则去开发。

开发过程中可以把 lower_case_table_names 的值设为 0,便于控制代码大小写敏感,提高代码的兼容性和严谨性。

参考

https://www.cnblogs.com/50614090/archive/2011/07/25/2116330.html

猜你喜欢

转载自blog.csdn.net/bingfeilongxin/article/details/88168480