主頁(yè) > 知識(shí)庫(kù) > Oracle更換為MySQL遇到的問(wèn)題及解決

Oracle更換為MySQL遇到的問(wèn)題及解決

熱門(mén)標(biāo)簽:400電話(huà)變更申請(qǐng) 400電話(huà)辦理服務(wù)價(jià)格最實(shí)惠 html地圖標(biāo)注并導(dǎo)航 武漢電銷(xiāo)機(jī)器人電話(huà) 南太平洋地圖標(biāo)注 呂梁外呼系統(tǒng) 催天下外呼系統(tǒng) 大豐地圖標(biāo)注app 北京金倫外呼系統(tǒng)

遷移工具

測(cè)試時(shí),使用powerdesinger進(jìn)行表結(jié)構(gòu)轉(zhuǎn)換,使用Navicat進(jìn)行數(shù)據(jù)導(dǎo)入。 生產(chǎn)環(huán)境數(shù)據(jù)量較大,會(huì)由數(shù)據(jù)組同事選用其他工具進(jìn)行遷移,到時(shí)再行補(bǔ)充。

應(yīng)用改造

添加mysql8.0驅(qū)動(dòng)包

使用mysql-connector-java-8.0.15.jar,如果是maven管理,直接添加依賴(lài):

                !--MySql 驅(qū)動(dòng) -->
		dependency>
			groupId>mysql/groupId>
			artifactId>mysql-connector-java/artifactId>
			version>8.0.15/version>
			scope>runtime/scope>
		/dependency>

修改數(shù)據(jù)源配置

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://host:ip/database?useUnicode=truecharacterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=password

對(duì)象改造

  • 如果使用的hibernate,將配置文件中主鍵自增的序列刪除掉,在mysql中將主鍵設(shè)置為自增;或者為序列創(chuàng)建對(duì)應(yīng)函數(shù)。使用mysql集群的話(huà),主鍵的生成方式還會(huì)有改動(dòng)。
  • 逐條sql檢查,特別是mybatis中拼接的sql語(yǔ)句,包括:
    • 主鍵修改:序列sequence刪除,數(shù)據(jù)庫(kù)中主鍵改為自增;或創(chuàng)建對(duì)應(yīng)自增函數(shù)
    • 對(duì)涉及mysql關(guān)鍵字的字段進(jìn)行處理,使用``標(biāo)識(shí)
    • 日期格式處理
    • rownum條件查詢(xún)改為limit條件查詢(xún)

問(wèn)題匯總

問(wèn)題:本地遠(yuǎn)程連接mysql數(shù)據(jù)庫(kù),報(bào)10060登錄異常

  • 出現(xiàn)該問(wèn)題可能的原因:

1、網(wǎng)絡(luò)不通; 2、服務(wù)未啟動(dòng); 3、防火墻未關(guān)閉; 4、服務(wù)器上防火墻端口未開(kāi)放; 5、端口未被監(jiān)聽(tīng); 6、權(quán)限不足。 我這里是排查發(fā)現(xiàn)測(cè)試數(shù)據(jù)庫(kù)服務(wù)器上3306端口未開(kāi)放原因。

  • 解決方法:
sudo vim /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
sudo service iptables restart
sudo iptables -L -n

問(wèn)題:Navicat 連接MySQL8出現(xiàn)2059錯(cuò)誤

  • 原因:mysql8之前的版本中加密規(guī)則是mysql_native_password,而在mysql8之后,加密規(guī)則是caching_sha2_password
  • 解決辦法:更改加密規(guī)則
mysql -uroot -ppassword #登錄
use mysql; #選擇數(shù)據(jù)庫(kù)
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #更改加密方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; #更新用戶(hù)密碼
FLUSH PRIVILEGES; #刷新權(quán)限

問(wèn)題:使用Navicat遷移數(shù)據(jù)報(bào)錯(cuò) --> [Err] [Dtf] 1426 - Too-big precision 7 specified for 'TIME_CREATE'. Maximum is 6.

  • 原因:oracle的DATE類(lèi)型是7位,而mysql的時(shí)間類(lèi)型最多6位,所以無(wú)法導(dǎo)入。
  • 解決方法:將oracle庫(kù)中的DATE改為T(mén)IMESTAMP,同時(shí)長(zhǎng)度改成6 (一定要把類(lèi)型和長(zhǎng)度都修改后才保存),即可導(dǎo)入。

問(wèn)題:數(shù)據(jù)遷移中varchar字段插入報(bào)錯(cuò) --> Data too long for column 'DESIGNER' at row 1

  • 原因:Oracle與mysql采用不同的編碼集,導(dǎo)致即使相同的字符,存儲(chǔ)長(zhǎng)度要求也不一樣(需進(jìn)一步深入了解)
  • 解決辦法:需要在msyql擴(kuò)展字段長(zhǎng)度

問(wèn)題:SpringBoot連接mysql報(bào)錯(cuò)--> Unknown system variable 'query_cache_size'

  • 原因:使用mysql驅(qū)動(dòng)jar包版本過(guò)低,不兼容mysql8.0
  • 解決:使用mysql-connector-java-8.0.15.jar,驅(qū)動(dòng)名換為com.mysql.cj.jdbc.Driver

問(wèn)題:更改為mysql后,應(yīng)用前端頁(yè)面查詢(xún)中文顯示亂碼

  • 原因:從數(shù)據(jù)庫(kù)、服務(wù)器、頁(yè)面三個(gè)維度排查編碼格式
    • MySQL數(shù)據(jù)庫(kù)編碼格式排查
    • 服務(wù)器編碼格式排查
    • 前端頁(yè)面編碼格式排查

最終發(fā)現(xiàn),是在Navicat連接中,設(shè)置了編碼格式為utf-8,導(dǎo)致導(dǎo)入的數(shù)據(jù)在Navicat中看到是正常的,但數(shù)據(jù)庫(kù)中是亂碼,查詢(xún)結(jié)果也是亂碼。這個(gè)真的查了好久,沒(méi)注意到時(shí)工具的原因。。

  • 解決辦法:重新設(shè)置編碼格式,導(dǎo)入數(shù)據(jù),顯示正常

以上就是Oracle換為MySQL遇到的問(wèn)題及解決的詳細(xì)內(nèi)容,更多關(guān)于Oracle換為MySQL的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • 詳解Mysql和Oracle之間的誤區(qū)
  • SpringBoot多數(shù)據(jù)庫(kù)連接(mysql+oracle)的實(shí)現(xiàn)
  • 詳解MySQL實(shí)時(shí)同步到Oracle解決方案
  • MySQL版oracle下scott用戶(hù)建表語(yǔ)句實(shí)例
  • mysql、oracle默認(rèn)事務(wù)隔離級(jí)別的說(shuō)明
  • MyBatis JdbcType 與Oracle、MySql數(shù)據(jù)類(lèi)型對(duì)應(yīng)關(guān)系說(shuō)明
  • mysql和oracle的區(qū)別小結(jié)(功能性能、選擇、使用它們時(shí)的sql等對(duì)比)
  • mysql類(lèi)似oracle rownum寫(xiě)法實(shí)例詳解
  • 淺談Mysql、SqlServer、Oracle三大數(shù)據(jù)庫(kù)的區(qū)別

標(biāo)簽:無(wú)錫 徐州 自貢 南充 西寧 龍巖 迪慶 麗水

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Oracle更換為MySQL遇到的問(wèn)題及解決》,本文關(guān)鍵詞  Oracle,更換,為,MySQL,遇到,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Oracle更換為MySQL遇到的問(wèn)題及解決》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Oracle更換為MySQL遇到的問(wèn)題及解決的相關(guān)信息資訊供網(wǎng)民參考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推薦文章