数据库接入内网服务器的问题总结

    将后端代码布入内网服务器的思考

  前言:最近经历了将换服务器,和布入内网服务器的过程,其中维护一些表的问题让我头疼不已。

    1. 使用的软件是 navicat for mysql,因为之前经历过删除全部数据,重新测试功能的过程,所以有保存好“删除全部数据”和“基本框架”(即全部表,视图,函数等生成的SQL语句)的脚本。这个是需要维护的,在后期使用的话非常方便。

    2.  删除数据的时候: 主要的问题是表的依赖关系,如主从表,需先删除从表数据再删除主表数据。  我们通过保存“删除全部数据”脚本就方便以后测试功能时使用。

    3.  迁移过程的时候: (1)生成表的时候,也有依赖关系。先生成主表,再生成从表。这时候也保存一个“生成”脚本,(2)但是这时候发现生成的表等名称全是小写的。这时候我只能参考以前的表名进行重命名。(3)视图的名称同样是小写,更头疼的是视图进行重命名会报错,"xxx视图已经存在"。我只能通过新建视图,然后复制SQL等到保存的时候命名好。(4)视图嵌套的话,根本看不清嵌套关系,而且也存在严重的依赖关系,可是我接手的时候已经都已经存在了。最后花费了无端浪费了一堆时间。ps: 函数和存储过程倒是区分大小写了。

    4. 总结:

    MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:
     1、数据库名与表名是严格区分大小写的;
          2、表的别名是严格区分大小写的;
          3、列名与列的别名在所有的情况下均是忽略大小写的;
          4、变量名也是严格区分大小写的;
        MySQL在Windows下都不区分大小写。

    要避免这个问题,你最好在定义数据库命名规则的时候就全部采用小写字母加下划线的组合,而不使用任何的大写字母。
        在不同操作系统中为了能使程序和数据库都能正常运行,最好的办法是在设计的时候都转为小写,但是如果在设计的时候已经规范化大小写了,那么在Windows环境下只要对数据库的配置做下改动就行了,具体操作如下:

      在MySQL的配置文件中my.ini [mysqld] 中增加一行  lower_case_table_names = 1  (0:区分大小写,1:不区分大小写)

    mysql将在创建与查找时将所有的表名自动转换为小写字符(  lower_case_table_names选项在缺省时windows为1 )

    还有尽量少用视图,更是别嵌套视图。首先嵌套视图的效率低,其实维护嵌套视图很容易出错,修改时多一个字段,少一个字段可能出问题。网上建议是列出需要的字段,至少一目了然(不要使用 * )

  最后

    乘着发现问题,知道原理,还有表数量等不是非常多的时候赶紧修改为小写加下划线组合。后期只要有"删除"和“创建”脚本就够了,美滋滋!(ps: SQL语句不区分大小写,捂脸)

                   

     分别是在linux和windos系统下的数据库控制台执行的命令。(大小写敏感和大小写不敏感)

原文地址:https://www.cnblogs.com/cleaverlove/p/8295631.html