Atea - Hero's Grave

          面向對象,開源,框架,敏捷,云計算,NoSQL,商業智能,編程思想。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            40 隨筆 :: 0 文章 :: 28 評論 :: 0 Trackbacks
          一段hibernate的SchemaExport,原來在win下運行正常,放到linux下就出了問題,在插入數據的時候發生了異常:
          2009-01-30 11:59:19,555 -WARN- org.hibernate.util.JDBCExceptionReporter:77 SQL Error: 1062, SQLState: 23000
          2009-01-30 11:59:19,556 -ERROR- org.hibernate.util.JDBCExceptionReporter:78 Duplicate entry '???' for key 2
          2009-01-30 11:59:19,562 -ERROR- org.hibernate.event.def.AbstractFlushingEventListener:301 Could not synchronize database
          state with session
          org.hibernate.exception.ConstraintViolationException: could not insert: 

          Caused by: java.sql.BatchUpdateException: Duplicate entry 
          '???' for key 2
          第一反應是SchemaExport的問題,后來才想到人家才不會那么耦合:P
          上網搜,都是說主鍵generator的問題,和我遇到的并不相符。

          后來裝了mysql的administrator,找到了原因。表引擎都變成了MyISAM,而不是期望的InnoDB。我的代碼是在用到batch的時候(Session.flush())才出的錯,查了查MyISAM的資料,應該就是這個了。
          編輯了etc/mysql/my.cnf,在[mysqld]下面追加了default-storage-engine=INNODB
          PS:在win下我不記得有配過這個設置,有可能是操作系統的默認引擎不一樣,回公司的時候查一下吧:)

          另外忘了改Default Character Set,也需要變成UTF-8才可以:default-character-set=utf8
          PS:需要把原DB刪掉重建才管用。
          posted on 2009-01-31 10:36 Atea 閱讀(3880) 評論(2)  編輯  收藏 所屬分類: DatabaseHibernate

          評論

          # re: 一種org.hibernate.exception.ConstraintViolationException 2009-05-25 16:34 匿名
          解決不了問題啊  回復  更多評論
            

          # re: 一種org.hibernate.exception.ConstraintViolationException 2009-05-28 20:59 Atea
          @匿名
          怎么個解決不了問題?  回復  更多評論
            

          主站蜘蛛池模板: 唐山市| 海城市| 武夷山市| 黄大仙区| 维西| 遂宁市| 宜都市| 佛冈县| 三江| 丹凤县| 巴彦淖尔市| 禹州市| 辽宁省| 阿拉善左旗| 仪陇县| 奇台县| 平乡县| 施秉县| 吴堡县| 理塘县| 武山县| 奇台县| 桐柏县| 沈丘县| 渑池县| 唐海县| 道孚县| 富锦市| 新邵县| 汾西县| 屏山县| 涟水县| 长宁县| 托克逊县| 孙吴县| 秭归县| 元阳县| 江达县| 潼关县| 康马县| 双桥区|