• 在Linux上部署web程序遇到的问题


    1、背景说明

    本地开发的程序打包成war包,发布在Linux服务器上,数据库是Mysql5.7, Tomcat8.5,服务器是centos

    2、遇到的问题

      数据库脚本执行失败

      tomcat端口冲突

      数据库表找不到

    3、解决问题

      数据库脚本执行失败主要是sql_mode 这个配置在作祟,由于导出的数据脚本存在不规范的现象,比如 ‘0000-00-00’这样的日期等

      通过下面的代码可以查看当前的sql_mode是什么

    select @@sql_mode

      如果有 NO_ZERO_IN_DATE、NO_ZERO_DATE这样的字样,脚本中是不能有上述的日期的

      如果有 ONLY_FULL_GROUP_BY ,查询语句使用group by时,需要写规范(覆盖select 出的字段)

      本次遇到的问题就是上述这两个模式,解决办法入下

    set @@sql_mode=''

      在引号内填 删除不要的模式后剩余的就可以了,默认修改的是session级别的,修改全局的代码入下

    set @@Global.sql_mode=''

      执行以下代码使其立即生效

    FLUSH PRIVILEGES

      之后又遇到了 too many connections 的问题, 解决方法和上面差不多,不在赘述

      数据库搞好了,开始搞tomcat了,由于服务器上已经有别的tomcat了,因此需要解决端口冲突的问题

      端口需要修改三处 Connector 的(默认是8080),Shutdown 的(默认是8005) AJP的(默认是 8009)

      将程序发布到tomcat上后,发现报错,根据控制台日志分析是找不到表,但是从库中查看表是存在的,最后发现是大小写不一致,

      windows系统的文件是不区分大小写的,Linux是区分的,表是文件的形式存储,所以找不到表

      需要修改mysql的一个叫 lower_case_table_names 的配置,依然使用上述的方法修改

      修改不成功,报错说这是一个只读的,只能从配置文件中修改了,找到/etc/my.cnf这个文件,在[mysqld]中添加 lower_case_table_names=1

      该文件修改后需要重启mysql,重启命令一般是 service mysql  restart,但是,centos系统不是,centos重启mysql命令是 service mysqld restart

      重启后,再次启动tomcat,好了

  • 相关阅读:
    第三周课程总结实验报告
    Java第二周学习总结
    2019春总结作业
    第十二周作业
    第十一周作业
    第十周作业
    第九周作业
    第八周作业
    第二周课程总结
    2019春总结
  • 原文地址:https://www.cnblogs.com/niusj/p/11654626.html
Copyright © 2020-2023  润新知