emu in blogjava

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            171 隨筆 :: 103 文章 :: 1052 評論 :: 2 Trackbacks

          公司終于還是決定買jira。于是要開始把bugzilla上面原有的bug數據遷移到jira上面。

          一開始考慮的方法是導出成csv文件再在jira中導入,可是這樣做的話很多關聯的數據就很難處理,而且所有的附件(截屏)都無法遷移。

          搜索了一下,http://www.atlassian.com/software/jira/docs/v3.1.1/bugzilla_import.html 上面介紹說現在直接從mysql遷移數據過來已經可以保留所有附件了,不過看到其他一些人的評論,估計遷移過程還是會有各種麻煩。先不管,按照說明動手倒倒看。果然出錯了:

          Select Bugzilla projects to import

          Step 2 of 3: Select Bugzilla projects to import

          Form Errors:

          • Error importing data from bugzilla: java.sql.SQLException: Unknown type '246 in column 25 of 28 in binary-encoded result set. at com.mysql.jdbc.MysqlIO.extractNativeEncodedColumn(MysqlIO.java:3710) at com.mysql.jdbc.MysqlIO.unpackBinaryResultSetRow(MysqlIO.java:3620) at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1282) at com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:2198) at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:413) at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:1899) at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:1347) at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1393) at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:958) at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1705) at com.atlassian.jira.util.BugzillaImportBean.createIssues(BugzillaImportBean.java:224) at com.atlassian.jira.util.BugzillaImportBean.create(BugzillaImportBean.java:169) at

          ......

           

          查了一下,有可能是數據庫版本太高造成的。因為bugzilla和其他的項目共用了一個mysql5.0Unknown type '246 大概是mysql5.0里面新的數據類型標記,舊的jdbc連接器無法識別它。

          http://downloads.mysql.com/snapshots.php 下了最新的connector(就是jdbc驅動)回來解壓后把里面的jar文件放到jiraWEB-INF/lib目錄下,關掉jira后刪掉舊的connector,重開jira,遷移成功了。

          jira看看,bug都過來了,附件也都可以看,可是全部中文提示都變成亂碼了

          試試將jdbcurl加上useUnicode=true&characterEncoding=gbk,還是一樣。

           

          clark的提醒下,改了my.ini里面的default-character-set=latin1改成default-character-set=gbk了,不但jdbc出來的仍舊是亂碼,連bugzilla都顯示亂碼了,還是改回去。

           

          上網繼續搜,終于在java mysql 中文問題的處理 看到了令人比較滿意的解釋:MysqlconnectorJ里面有bug(可是這么久了就是沒有改正呢?)。現在有兩個解決方案,一是改mysql的源碼,自己編譯connectorJ,二是是改BugzillaImportBean.java 的代碼,自己編譯并替換jiraBugzillaImportBean.class

           

          網上 有人在抱怨BugzillaImportBean.java很不好改,那么長一串import要一個一個添到classpath里面都要辦天,不知道那位老兄是不是只用VIjava的。我們用IDE的比他幸福多了。在jira目錄下搜出來全部jar文件,拷貝到一個目錄下,然后在JBuilderconfig libraries 里面添加一個jira目錄,把這下jar文件全部天到這個目錄下,順便把jiraclasses目錄的路徑也添加到這個目錄下,然后開一個工程引用這個目錄進來,在工程里面建com.atlassian.jira.util包,然后把BugzillaImportBean.java放進去就可以編譯通過了。改一個試試看:

           

          fields.put(IssueFieldConstants.SUMMARY, new String(resultSet.getString("short_desc").getBytes("ISO8859-1")));

           

          編譯后替換調jiraBugzillaImportBean.class,果然不錯。

          改后的完整源碼和編譯后的類文件在這里

          至于方案一,請看我的另一篇文章:MySQL 的jdbc為何不能正確的編碼漢字

          posted on 2005-06-01 14:00 emu 閱讀(1290) 評論(2)  編輯  收藏

          評論

          # re: 從bugzilla遷移數據到jira 2005-06-01 14:30 大胃
          真的決定買啦?什么版本?  回復  更多評論
            

          # re: 從bugzilla遷移數據到jira 2005-06-01 15:39 emu
          標準版,就是最便宜那個。  回復  更多評論
            


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 阿瓦提县| 罗田县| 龙州县| 金平| 灵山县| 东城区| 会东县| 彭泽县| 略阳县| 保康县| 武定县| 甘肃省| 张家口市| 大庆市| 济源市| 乌兰县| 海宁市| 乌兰浩特市| 隆德县| 林口县| 抚宁县| 朝阳区| 习水县| 陵水| 望谟县| 东明县| 土默特右旗| 梧州市| 湟中县| 灵璧县| 芮城县| 宁南县| 寿宁县| 宜君县| 黔西县| 中卫市| 沁水县| 公主岭市| 郁南县| 澜沧| 临城县|