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
          @匿名
          怎么個解決不了問題?  回復  更多評論
            

          主站蜘蛛池模板: 永德县| 九龙县| 班玛县| 永寿县| 灵台县| 万源市| 巴彦淖尔市| 大城县| 栖霞市| 谢通门县| 芦溪县| 得荣县| 麟游县| 凤翔县| 麦盖提县| 分宜县| 榆社县| 秦皇岛市| 庆云县| 徐闻县| 临安市| 依安县| 阿瓦提县| 西宁市| 襄樊市| 嫩江县| 略阳县| 新昌县| 灵台县| 大洼县| 麻江县| 通城县| 宁夏| 铅山县| 股票| 五河县| 淅川县| 五家渠市| 车险| 天峻县| 乌兰县|