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 閱讀(3873) 評論(2)  編輯  收藏 所屬分類: DatabaseHibernate

          評論

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

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

          主站蜘蛛池模板: 白沙| 洪泽县| 兴宁市| 葵青区| 玉门市| 定结县| 瓦房店市| 南城县| 揭东县| 平武县| 思茅市| 韶山市| 湘潭市| 杭州市| 梨树县| 青海省| 平乡县| 都兰县| 永新县| 岢岚县| 桃源县| 永年县| 龙岩市| 雷山县| 临城县| 嵊州市| 夏邑县| 平乐县| 台北县| 镇沅| 崇礼县| 阳新县| 桂平市| 阿克苏市| 中方县| 张家口市| 秭归县| 资溪县| 崇明县| 宁晋县| 澳门|