记录本博客从windows server 2008 迁移到centos碰到的问题
2015-12-20 14:05
369 查看
本文原地址来自于我的个人博客:www.endless365.com,希望得到各位的关注。
本文详细地址出自于:http://www.endless365.com/article/get?type=tec&id=142
今天在对本博客做迁移的时候,从windows server 2008 迁移到centos里面,一直碰到了hibernate在查询字父类的时候获取不到子类的信息,然后进行了以下分析。
采取排除法将问题范围一步步的缩小。
1、从windows迁移到centos中,路径可能会存在不一致,所以先检查所有的路径是否正常,结果正常。
2、既然在windows环境下能查询出来,那肯定就不是代码的问题,增加打印,查看打印日志,发现从数据库获取到的值父类instanceof 子类都为false,那就肯定是hibernate和数据库的问题。
3、检查数据库的日志,发现了一个警告,当然出现了警告不管是不是这个问题的原因都应该解决。警告如下:
估计这个是由于数据库编码导致的,查看了数据库的my.cnf配置文件,确实没有数据编码的配置,mysql默认的编码为latin1,修改为utf-8。重启数据库,该问题消失。
4、删除从项目迁移过来的数据,让hibernate自动生成,看是否能够获取到子类信息,结果竟然是能够获取到,赶紧对比一下两个数据库表的结构,发现子类表在不同系统下命令不一样,比如t_articleCode和t_articlecode,突然想起mysql 在linux下面默认区分大小写,一个很重大的线索,赶紧修改为对大小不敏感(lower_case_table_names=1)。
5、重启数据库和服务,将原有迁移数据导入,问题解决。
本文详细地址出自于:http://www.endless365.com/article/get?type=tec&id=142
今天在对本博客做迁移的时候,从windows server 2008 迁移到centos里面,一直碰到了hibernate在查询字父类的时候获取不到子类的信息,然后进行了以下分析。
采取排除法将问题范围一步步的缩小。
1、从windows迁移到centos中,路径可能会存在不一致,所以先检查所有的路径是否正常,结果正常。
2、既然在windows环境下能查询出来,那肯定就不是代码的问题,增加打印,查看打印日志,发现从数据库获取到的值父类instanceof 子类都为false,那就肯定是hibernate和数据库的问题。
3、检查数据库的日志,发现了一个警告,当然出现了警告不管是不是这个问题的原因都应该解决。警告如下:
估计这个是由于数据库编码导致的,查看了数据库的my.cnf配置文件,确实没有数据编码的配置,mysql默认的编码为latin1,修改为utf-8。重启数据库,该问题消失。
4、删除从项目迁移过来的数据,让hibernate自动生成,看是否能够获取到子类信息,结果竟然是能够获取到,赶紧对比一下两个数据库表的结构,发现子类表在不同系统下命令不一样,比如t_articleCode和t_articlecode,突然想起mysql 在linux下面默认区分大小写,一个很重大的线索,赶紧修改为对大小不敏感(lower_case_table_names=1)。
5、重启数据库和服务,将原有迁移数据导入,问题解决。
相关文章推荐
- 阿里云云盾占用过多内存
- Linux 文件相关的常用命令
- Linux之Raid详解
- linux下的工具
- linux操作提示:“Can't open file for writing”或“operation not permitted”的解决的方法
- 【Linux运维入门】JMX方式远程监控Linux下JVM运行情况
- Linux常用命令
- I.MX6 Linux、Jni ioctl 差异
- 【Linux 驱动】netfilter/iptables (一) 基础概念
- CENTOS里面的配置163 mail 系统
- linux 下jdk安装
- Linux系统基础
- Find使用详解
- cdlinux可以安装在c盘
- Linux 文件共享之SMB服务
- Linux 下mysql数据库导入导出
- 将Centos的yum源更换为国内的阿里云源
- linux中打开mysql的问题-bash: mysql: command not found
- linux grub.conf 文件详解及实例
- Linux系统中查杀僵尸进程的基本方法讲解