linux部署MySQL数据表名大小写问题

来源:互联网 发布:车范根数据 编辑:程序博客网 时间:2024/06/07 08:44

     项目在本地跑的时候没问题,但是部署在Linux后,就报错找不到相关数据表,但是查看数据库后发现明明存在,这是因为大小写问题。Linux对大小写是敏感的,尤其在开发quartz模块的时候,quartz内部查询数据的语句是大写的,如QRTZ_LOCKS、QRTZ_TRIGGERS等这些内部表。

    

        解决方案:其实很简单,让它对大小写不敏感即可,即在Linux上的MySQL的配置文件/etc/my.cnf中加入一行代码:

lower_case_table_names=1。my.cnf文件在下方会给完整代码。

    

      注意事项

虽然简单,但是有一些需要注意的地方:

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


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

       service mysqld restart


3.再次查询数据表,这时发现不管查询SQL语句中的表名是大写还是小写都提示找不到此表了。

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

       解决办法是:

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

        (2)删除原来的表;

        (3)修改配置;

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

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



配置完整版代码:my.cnf


原创粉丝点击