美文网首页
centos下mysql表名大小写的问题

centos下mysql表名大小写的问题

作者: sean_liu_01 | 来源:发表于2018-11-16 16:17 被阅读0次

    Mysql 表名大小写问题

    今天在开发中遇到这么个问题,将连接的数据库改为服务器上的时候(服务器是Linux系统的),程序跑起来后一直出错,总提示数据库的表找不到,

    而打开数据库看该表明明是存在的,在我的印象中MySQL数据是不区分大小写的,后来查资料才发现,在Linux系统中MySQL默认是严格区分大小

    写的,可以在配置文件中添加配置,

    用root帐号登录后,在/etc/my.cnf 中的[mysqld]后添加添加lower_case_table_names=1,重启MYSQL服务,这时已设置成功:不区分表名的大小写(操作时,应当先删除原有的数据库,设置之后,重启mysql服务,然后重新创建数据库,否则会报错

    ERROR 1010 (HY000): Error dropping database

    其中 0:区分大小写,1:不区分大小写

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

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

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

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

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

    linux下mysql默认是要区分表名大小写的。mysql是否区分大小写设置是由参数lower_case_table_names决定的,其中:

    1)lower_case_table_names = 0

    区分大小写(即对大小写不敏感),默认是这种设置。这样设置后,在mysql里创建的表名带不带大写字母都没有影响,都可以正常读出和被引用。

    2)lower_case_table_names = 1 

    不区分大小写(即对大小写敏感)。这样设置后,表名在硬盘上以小写保存,MySQL将所有表名转换为小写存储和查找表上。该行为也适合数据库名和表的别名

    也就是说,mysql设置为不分区大小写后,创建库或表时,不管创建时使用大写字母,创建成功后,都是强制以小写保存!

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

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

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

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

    4)变量名也是严格区分大小写的;

    5)MySQL在Windows下都不区分大小写,但是在Linux下默认是区分大小写的。

    6)如果想在查询时区分字段值的大小写,则字段值需要设置BINARY属性,设置的方法有多种:

    a)创建时设置:

    CREATE TABLE T(A VARCHAR(10) BINARY);

    b)使用alter修改

    相关文章

      网友评论

          本文标题:centos下mysql表名大小写的问题

          本文链接:https://www.haomeiwen.com/subject/ppbmfqtx.html