????????最近因為項目國產(chǎn)化需要,需要將Mysql數(shù)據(jù)庫適配到金倉數(shù)據(jù)庫中,就此給大家分享一下我的采坑過程。如有錯誤。懇請指正!
一、資源準(zhǔn)備
- 官網(wǎng)地址 人大金倉-成為世界卓越的數(shù)據(jù)庫產(chǎn)品與服務(wù)提供商
- 金倉社區(qū) 金倉社區(qū)-數(shù)據(jù)庫使用者、DBA開發(fā)人員、數(shù)據(jù)化經(jīng)營者已入駐
-
安裝包、證書資源下載地址
- 人大金倉-成為世界卓越的數(shù)據(jù)庫產(chǎn)品與服務(wù)提供商
- 安裝包根據(jù)需要下載。授權(quán)文件一定要記得下載不然無法安裝(90天試用好像)。接口驅(qū)動下載第一個就好了。技術(shù)文檔建議下全部的。金倉的技術(shù)文檔還是很全的!
- 開發(fā)資料
- 以下是我下載的資料(PDF-全部文檔)
- 以下是我下載的資料(PDF-全部文檔)
- 遷移資料詳解
- jdbc-x86.zip 驅(qū)動,相當(dāng)于JDBC驅(qū)動
- 主要關(guān)注1、2里面的文檔
- 安裝后得到的工具庫 第一個:集群部署工具 第二個:遷移工具? 第三個: 開發(fā)工具(相當(dāng)于Navicat)
- 其他資源收集
- SQL語法轉(zhuǎn)化(SQL遷移利器) http://59.108.228.18:8022/migrate/tools
- 社區(qū)問答 金倉話題-金倉社區(qū)
二、數(shù)據(jù)庫安裝
?好啦,資源已經(jīng)準(zhǔn)備好了。現(xiàn)在開始安裝。具體安裝過程本文并不體現(xiàn)。只附上安裝教程和注意事項。
- Linux安裝
- 前置要求:磁盤一定要夠,不然安裝不上去。筆者本來用虛擬機(jī)因為內(nèi)存不夠轉(zhuǎn)到服務(wù)器安裝了。
- 安裝教程:KingbaseES 命令行安裝數(shù)據(jù)庫 - 技術(shù)干貨 - 金倉社區(qū)
- Window安裝
- 安裝教程: KingbaseES iso安裝包安裝指導(dǎo)說明 - 技術(shù)干貨 - 金倉社區(qū) 基本傻瓜式操作,一步步按需要安裝就可以了
-
安裝注意事項
- 磁盤空間一定要夠
- 如果是Mysql遷移,推薦安裝選擇Oracle模式并且忽略大小寫。同Mysql一致
三、開始遷移
-
環(huán)境準(zhǔn)備
- 打開Navicat,準(zhǔn)備源數(shù)據(jù)庫,例如 db: test username: root password: mysql
- 打開 KStudio.exe,創(chuàng)建目標(biāo)數(shù)據(jù)庫,例如 db: test username:root password: mysql
- 這邊需要保證遷移兩邊的庫 數(shù)據(jù)庫名、用戶密碼均同名(官方建議)
-
遷移流程
- 打開遷移工具,windows:bat linux:.sh(local host:8080)
- 新建源數(shù)據(jù)庫
- 新建目標(biāo)數(shù)據(jù)庫(KES兼容模式如果不是Oracle數(shù)據(jù)庫遷移兩個好像都可以隨便選,我這里都試過。最后選的是PG)
- 新建遷移任務(wù)(默認(rèn)配置就好,我在線程配置中開啟了多線程,大概是遷移的時候會更快一點吧)
- 遷移完成(我在遷移過程中沒有遇到問題,大概遷移了10多分鐘)
-
修改遷移后的模式
- 遷移完成后查看庫會發(fā)現(xiàn)多了個模式,我們可以將這個模式修改為public模式,到時候查詢數(shù)據(jù)庫的時候就能直接通過 select * from 表名 查詢數(shù)據(jù),否則就是 select * from public.表名
- 將public修改為其他名稱
- 再將新的模式修改為public
-
代碼集成
- 更換驅(qū)動為kingbase8-8.6.0.jar(通過內(nèi)部引入jar包的方式)
- 修改配置
- 數(shù)據(jù)源
spring: datasource: driver-class-name: com.kingbase8.Driver type: com.alibaba.druid.pool.DruidDataSource url: jdbc:kingbase8://127.0.0.1:54321/phjygf?clientEncoding=UTF-8 username: balabala password: balabala
- mybatis-plus
@SpringBootConfiguration public class MyBatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor config = new MybatisPlusInterceptor(); config.addInnerInterceptor(new PaginationInnerInterceptor(DbType.POSTGRE_SQL)); return config; } }
- pagehelper
pagehelper: # 方言 pg or oricle helper-dialect: postgresql
到此配置完成,如果可以正常啟動,那么接下來就可以做代碼層面的適配了.如果遇到相關(guān)問題,建議查看下載下來的文檔信息
- 數(shù)據(jù)源
- 更換驅(qū)動為kingbase8-8.6.0.jar(通過內(nèi)部引入jar包的方式)
- 打開遷移工具,windows:bat linux:.sh(local host:8080)
-
遷移注意事項
- 如果遷移之前需要進(jìn)行遷移評估,轉(zhuǎn)到 http://59.108.228.18:8022/dashboard?source=bbs&token=eyJhbGciOiJIUzUxMiJ9.eyJpZCI6Mzg3NywiZW1haWwiOiIyOTkzNDQyNzUwQHFxLmNvbSIsInN1YiI6ImxkYiIsImlhdCI6MTY4MTgyMzUyNiwiZXhwIjoxNjgxODMwNzI2fQ.nii_qzCCO64emEOxRV4aODFleEV5ff4BFXJejcaufE_RfqVzjYYzz1fcKYUBGa_fhR94pZiQQX19E8pEp8PDTQ
- 如果不熟悉相關(guān)流程,詳情見官方遷移文檔
- 遷移后的模式強(qiáng)烈建議修改為public模式
- 驅(qū)動和方言配置都需要修改
四、代碼層面適配遇到的相關(guān)問題及其解決方案
-
date_format函數(shù)無效
- 原因:不支持該函數(shù)
- 解決方案: 更換函數(shù) date_format -> to_char
- Group by 分組中的字段在查詢字段中也需要存在
-
CONNECT BY clause required in this query block
-
原因:查詢字段有關(guān)鍵字
-
解決方案:在關(guān)鍵字字段上加上""
-
-
將Mysql中的`符號更換為"
-
違反約束錯誤:修改約束或者業(yè)務(wù)邏輯
-
year函數(shù)報錯
-
原因:不支持該函數(shù)
-
解決方案:year(class_times.date)轉(zhuǎn)換為->EXTRACT(YEAR FROM class_times.date)
-
-
操作符不是唯一的: varchar >= pg_catalog.date
-
原因:類型不一致
-
解決方案:轉(zhuǎn)成相同類型的值然后再進(jìn)行比較 to_char、to_date詳情SQL文檔
-
-
Hint: 沒有匹配指定名稱和參數(shù)類型的函數(shù). 您也許需要增加明確的類型轉(zhuǎn)換.
-
原因: 不支持該函數(shù)
-
解決方案:更換函數(shù)或在業(yè)務(wù)層實現(xiàn)該功能
-
-
函數(shù) FIND_IN_SET(unknown, varchar) 不存在
-
原因: 不支持該函數(shù)
-
解決方案:更換函數(shù)或在業(yè)務(wù)層實現(xiàn)該功能
-
-
IFNULL -》COALESCE(p.valid,0)
-
GROUP_CONCAT -》array_to_string(array_agg(t.cname),',') 文章來源:http://www.zghlxwxcb.cn/news/detail-497196.html
好啦,今天的分享就到這了,希望能幫到需要遷移的小伙伴~文章來源地址http://www.zghlxwxcb.cn/news/detail-497196.html
到了這里,關(guān)于Mysql遷移至KingBase(金倉數(shù)據(jù)庫)避坑指南-Java版的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!