zoukankan      html  css  js  c++  java
  • linux系统下MySQL表名区分大小写问题

     问题如下:

    比如上图中的PERSON表,查询SQL语句中如果表名是小写,就会报错说person表不存在。

    因为Linux环境下的MySQL数据库的表名默认是区分大小写的,可以查看Linux上的MySQL的配置文件/etc/my.cnf:

    [root@VM_219_131_centos tomcat7]# cat /etc/my.cnf 
    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    user=mysql
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    
    [mysqld_safe]
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    [root@VM_219_131_centos tomcat7]# 

    如果要使用数据库表名不区分大小写的话,就需要在[mysqld]下面添加一行配置,即 lower_case_table_names=1:

    [root@VM_219_131_centos tomcat7]# vi /etc/my.cnf 
    [mysqld]
    lower_case_table_names=1
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    user=mysql
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    
    [mysqld_safe]
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid

    网上对该项配置的说明:

    lower_case_table_names参数详解:
    
    其中 0:区分大小写,1:不区分大小写
    
    MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:
    
    1、数据库名与表名是严格区分大小写的;
    
    2、表的别名是严格区分大小写的;
    
    3、列名与列的别名在所有的情况下均是忽略大小写的;
    
    4、变量名也是严格区分大小写的;
    
    MySQL在Windows下都不区分大小写。
    
    3、如果想在查询时区分字段值的大小写,则:字段值需要设置BINARY属性,设置的方法有多种:
    
    A、创建时设置:
    
    CREATE TABLE T(
    
    A VARCHAR(10) BINARY
    
    );
    
    B、使用alter修改:
    
    ALTER TABLE`tablename` MODIFY COLUMN `cloname` VARCHAR(45) BINARY;
    
    C、mysql tableeditor中直接勾选BINARY项。

    修改完配置之后,一定要重启数据库:

    [root@VM_219_131_centos tomcat7]# service mysqld restart
    Stopping mysqld:  [  OK  ]
    Starting mysqld:  [  OK  ]

    然后使用Navicat工具重新连接MySQL数据库,再次查询perosn表,这时发现不管查询SQL语句中的表名是大写还是小写都提示找不到person表了。

    原因是修改配置之后,会导致原来的大写的表名PERSON无法识别,所以这一点要特别注意。

    解决办法是:

    (1)在修改配置之前一定先将所有表的表结构和表数据导出做备份;

    (2)删除原来的表;

    (3)修改配置;

    (4)将表结构和表数据导入。

    按照上面的步骤操作之后,再次查询person表,表名就不区分大小写了。

     

  • 相关阅读:
    Dev:LookUpEdit的用法
    Excel:写入Excel单纯写入
    浅拷贝与深拷贝
    自行车的种类
    简单的话
    Excel:导入导出原文02
    VS2010中出现无法嵌入互操作类型
    U盘有时候不显示(win7 64位)
    Knockout学习之Single Page Application
    CSS点滴整理
  • 原文地址:https://www.cnblogs.com/trunkslisa/p/9462050.html
Copyright © 2011-2022 走看看