Atea - Hero's Grave

          面向?qū)ο螅_源,框架,敏捷,云計(jì)算,NoSQL,商業(yè)智能,編程思想。

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            40 隨筆 :: 0 文章 :: 28 評(píng)論 :: 0 Trackbacks
          一段hibernate的SchemaExport,原來在win下運(yùn)行正常,放到linux下就出了問題,在插入數(shù)據(jù)的時(shí)候發(fā)生了異常:
          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
          第一反應(yīng)是SchemaExport的問題,后來才想到人家才不會(huì)那么耦合:P
          上網(wǎng)搜,都是說主鍵generator的問題,和我遇到的并不相符。

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

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

          評(píng)論

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

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

          主站蜘蛛池模板: 蒲城县| 永城市| 乡城县| 内乡县| 康马县| 云霄县| 德令哈市| 昭苏县| 仁化县| 图们市| 垫江县| 拜城县| 水城县| 泽普县| 新密市| 喀喇沁旗| 香港| 许昌县| 岑溪市| 嘉禾县| 泰州市| 台湾省| 德江县| 辽阳市| 犍为县| 筠连县| 贵德县| 清远市| 黔南| 丹棱县| 嵩明县| 湖南省| 南涧| 泸水县| 成武县| 郸城县| 长寿区| 务川| 咸阳市| 正定县| 沙河市|