今天在将线下写的SQL语句拿到线上来测试的时候,突然就出问题了。以为是MySQL版本问题,对比了一下也就是小版本有差别,大版本 都是5.7,应该不会有问题的呀。后来想到,本地是Windows系统,服务器端是CentOS(Linux)系统。果然,是系统的问题。
结论:
Windows下MySQL表名默认不区分大小写,且无法设置区分大小写。因为Windows下文件系统大小写不敏感(就是说创建了a.txt后无法创建A.txt)
linux下MySQL表名默认区分大小写。SQL语句中的表名需要注意大小写问题。
参考资料:
https://www.cnblogs.com/micro-chen/p/9165170.html
官方文档说明:
https://dev.mysql.com/doc/refman/5.6/en/identifier-case-sensitivity.html
(Use lower_case_table_names=0 on Unix and lower_case_table_names=2 on Windows)
(You should not set lower_case_table_names to 0 if you are running MySQL on a system where the data directory resides on a case-insensitive file system (such as on Windows or OS X.)
变量lower_case_table_names的取值
取值范围有三个,分别是0、1、2.
1. 设置成0:表名按你写的SQL大小写存储,大写就大写小写就小写,比较时大小写敏感。
2. 设置成1:表名转小写后存储到硬盘,比较时大小写不敏感。
3. 设置成2:表名按你写的SQL大小写存储,大写就大写小写就小写,比较时统一转小写比较。
这个选项不仅仅适用于表名的大小写敏感,同样适用于数据库名和表别名。
本站文章除注明转载/出处外,均为原创,若要转载请务必注明出处。转载后请将转载链接通过邮件告知我站,谢谢合作。本站邮箱:admin@only4.work
尊重他人劳动成果,共创和谐网络环境。点击版权声明查看本站相关条款。