张小弟博客

梦想需要付诸行动,否则只能是梦

MySQL表名大小写敏感导致的问题

今天在将线下写的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@mail.only4.work

尊重他人劳动成果,共创和谐网络环境。点击版权声明查看本站相关条款。

    打赏

    发表评论:

    搜索
    本文二维码
    标签列表
    站点信息
    • 文章总数:202
    • 页面总数:20
    • 分类总数:50
    • 标签总数:125
    • 评论总数:27
    • 浏览总数:31848

    || ||||||

    ||


                MySSL 安全签章
    Z-BlogPHP