新购入一台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';
注意:此方案为修改配置,日后其他项目出现此问题排查难度较为繁琐,故更好的解决思路为修改代码,避免此问题的发生。
标签:-%,NO,Mysql,值为,大小写,mode,表名,服务器 From: https://www.cnblogs.com/whowell/p/17024952.html