zoukankan      html  css  js  c++  java
  • MySQL数据库中库、表名、字段的大小写问题

    MySQL数据库中库、表名、字段的大小写问题

    原文出处: https://blog.csdn.net/andyliulin/article/details/83020934

     在使用MySQL建库的过程中发现了一个问题,无论怎么创建库,创建出来的库名都是小写的。然后上网查了一下资料。

     在MySQL中,数据库和表都是对应目录下的一个或多个文件。因此,操作系统的大小写是否敏感决定了数据库大小写是否敏感。而在Windows中是对大小写不敏感的(Linux是对大小写敏感的)。

    下图是在windows操作系统上MySQL中lower_case_table_system和lower_case_table_names的默认值。

     

    下图是在Linux操作系统上MySQL中lower_case_table_system和lower_case_table_names的默认值。

     变量lower_case_file_system说明是否数据目录所在的文件系统对文件名的大小写敏感。ON说明文件名的大小写不敏感,OFF表示敏感。

    lower_case_table_names参数说明

    当值为0时

    使用CREATE TABLE或CREATE DATABASE语句制定的大小写字母在硬盘上保存表名和数据库名。名称比较对大小写敏感。在大小写不敏感的操作系统如windows

    或Max OS x上我们不能将参数设为0,如果再大小写不敏感的文件系统上将“lower_case_table_names”强制设置为0,并使用不同的大小写访问MyISAM表名,可能会导

    致索引破坏。

    当值为1时

    表名在硬盘上以小写保存,名称比较对大小写不敏感。MySQL将所有表名转换为小写存储和查找表上。该行为也适合数据库名和表的别名,该值为Windows的默认值。

    当值为2时

             表名和数据库名在硬盘上使用CREATETABLE或CREATE DATABASE语句指定的大小写字母进行保存,但MySQL将它们转换为小写在查找表上。名称比较对大小写不

    敏感,即按照大小写来保存,按照小写来比较。注意:只在对大小写不敏感的文件系统上适用!innodb表名用小写保存。

     那么现在问题来了,如何将Linux操作系统上有大小写的数据库还原到Windows操作系统上?

    1、  将数据库数据通过mysqldump导出

    2、  在my.cnf或my.ini中更改lower_case_table_names=1,并重启Mysql服务。

    3、  将导出的数据导入MySQL数据库中。

    在MySql上为了避免大小写问题引来的不必要的麻烦,建议都将“lower_case_table_names”设置值为1。我们可以用其他的方式来命名。

  • 相关阅读:
    安卓小助手
    位图切割器&位图裁剪器
    OAuth2.0 的简介
    多账户的统一登录方案
    常用的一些SQL语句
    SQL语句的优化
    SpringCloud简介与5大常用组件
    数据库为什么需要锁机制?有哪些锁机制?
    高并发下如何优化能避免服务器压力过大?
    Spring MVC 简介
  • 原文地址:https://www.cnblogs.com/sumlen/p/11356253.html
Copyright © 2011-2022 走看看