关于新服务器安装Mysql服务后注意事项:1.表名区分大小写 2.日期中不允许出现值为0

新购入一台Linux服务器,将项目部署至服务器,项目出现问题记录如下:

1.项目使用JPA,实例类中表名为大写,JPA查询显示该表不存在,原因是Mysql设置中默认表名区分大小写

 show variables like "%case%";

mysql> show variables like "%case%";
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | ON    |
| lower_case_table_names | 0     |
+------------------------+-------+
2 rows in set (0.00 sec)

 将在my.cnf里将lower_case_table_names参数调整为1,改成忽略大小写。

 

2.项目中时间查询,因为日期格式默认为%Y-%m-%d,若查询存在将%Y-%m-%d转换成%Y-%m,select str_to_date(date_format(now(),'%Y-%m'),'%Y-%m') from dual;

  会发现开发环境中时间2023-01-01会转换成2023-01-00,但是生产环境中时间结果为空值

SELECT @@GLOBAL.sql_mode;
SELECT @@SESSION.sql_mode;

执行结果如下:

 

 

 Mysql配置中日期不允许出现0的值,需要修改此值

SET GLOBALsql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

SET SESSION sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

 

注意:此方案为修改配置,日后其他项目出现此问题排查难度较为繁琐,故更好的解决思路为修改代码,避免此问题的发生。

posted @ 2023-01-04 15:17  WhoWell  阅读(27)  评论(0)    收藏  举报