sql保存数据之提示保存成功数据库无数据问题

        开发中难免会遇到一些让你想不到的问题和bug,今天我这遇到了一个最开始我认为太奇葩的问题了,怎么想都不知道是什么原因。

        问题描述:系统上线后发现其中部分表单保存提示成功,但是数据库里居然没有数据,what,这是什么情况,上线前测试是没有问题啊,怎么就突然部分表单不可以了呢?

        环境描述:系统测试一个库,正式一个库,同一个服务器

        分析问题:1、开发环境

                         2、数据库

                         3、后台代码

        问题排查:1、上面说了,开发环境是没有问题的

                         2、数据库时相同的数据库环境,查看了是否生产环境的库里的部分表单损坏(通过sql语句插入数据),发现没有问题,那么数据库也是没有问题了

        那就剩下这最后一个代码上了,基本上就是在这三方面排查了

                         3、当然不出所料,问题就是在后台代码中。

        问题所在:说问题前先说下数据库的一些知识。本人用的是Oracle数据库,sql数据库有这样一个特点:在oralce中,不同的用户,使用不同的schema. 但在sqlserver中,同一个用户可以有多个schema.

         在后台开发中数据库方面用了hibernate,但是这里有个schema属性,就是这个属性导致了我之前bug出现

<hibernate-mapping>
    <class name="com.techcomer.adm.po.AdmCard" table="ADM_CARD" schema="aaaa">
        <id name="id" type="java.lang.Long">
            <column name="ID" precision="10" scale="0" />
            <generator class="assigned" />
        </id>
        <property name="deptCode" type="java.lang.String">
            <column name="DEPT_CODE" length="20" not-null="true" />
        </property>
        <property name="applyDate" type="java.util.Date">
            <column name="APPLY_DATE" length="7" not-null="true" />
        </property>

在上述代码中,我在属性上加了schema,而aaaa就是代表了我的要访问数据库的用户,而我的生成环境用户不是aaaa,而是bbbb,这就是问题所在了。所以虽然数据库语句没问题,但是数据在正式库就是没有。把这个属性去掉就可以了,或者换成生产环境用户。

       总结:遇见问题不可怕,一步一步思路清晰,肯定能找到问题并解决掉!!!!

猜你喜欢

转载自blog.csdn.net/My_Jack/article/details/79419650