记录本博客从windows server 2008 迁移到centos碰到的问题

本文原地址来自于我的个人博客: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、重启数据库和服务,将原有迁移数据导入,问题解决。


你可能感兴趣的:(JAVA,DATABASE)