Oracle更换为MySQL遇到的问题及解决


Posted in Oracle onMay 21, 2021

迁移工具

测试时,使用powerdesinger进行表结构转换,使用Navicat进行数据导入。 生产环境数据量较大,会由数据组同事选用其他工具进行迁移,到时再行补充。

应用改造

添加mysql8.0驱动包

使用mysql-connector-java-8.0.15.jar,如果是maven管理,直接添加依赖:

<!--MySql 驱动 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>8.0.15</version>
			<scope>runtime</scope>
		</dependency>

修改数据源配置

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

对象改造

  • 如果使用的hibernate,将配置文件中主键自增的序列删除掉,在mysql中将主键设置为自增;或者为序列创建对应函数。使用mysql集群的话,主键的生成方式还会有改动。
  • 逐条sql检查,特别是mybatis中拼接的sql语句,包括:
    • 主键修改:序列sequence删除,数据库中主键改为自增;或创建对应自增函数
    • 对涉及mysql关键字的字段进行处理,使用``标识
    • 日期格式处理
    • rownum条件查询改为limit条件查询

问题汇总

问题:本地远程连接mysql数据库,报10060登录异常

  • 出现该问题可能的原因:

1、网络不通; 2、服务未启动; 3、防火墙未关闭; 4、服务器上防火墙端口未开放; 5、端口未被监听; 6、权限不足。 我这里是排查发现测试数据库服务器上3306端口未开放原因。

  • 解决方法:
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

问题:Navicat 连接MySQL8出现2059错误

  • 原因:mysql8之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password
  • 解决办法:更改加密规则
mysql -uroot -ppassword #登录
use mysql; #选择数据库
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #更改加密方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; #更新用户密码
FLUSH PRIVILEGES; #刷新权限

问题:使用Navicat迁移数据报错 --> [Err] [Dtf] 1426 - Too-big precision 7 specified for 'TIME_CREATE'. Maximum is 6.

  • 原因:oracle的DATE类型是7位,而mysql的时间类型最多6位,所以无法导入。
  • 解决方法:将oracle库中的DATE改为TIMESTAMP,同时长度改成6 (一定要把类型和长度都修改后才保存),即可导入。

问题:数据迁移中varchar字段插入报错 --> Data too long for column 'DESIGNER' at row 1

  • 原因:Oracle与mysql采用不同的编码集,导致即使相同的字符,存储长度要求也不一样(需进一步深入了解)
  • 解决办法:需要在msyql扩展字段长度

问题:SpringBoot连接mysql报错--> Unknown system variable 'query_cache_size'

  • 原因:使用mysql驱动jar包版本过低,不兼容mysql8.0
  • 解决:使用mysql-connector-java-8.0.15.jar,驱动名换为com.mysql.cj.jdbc.Driver

问题:更改为mysql后,应用前端页面查询中文显示乱码

  • 原因:从数据库、服务器、页面三个维度排查编码格式
    • MySQL数据库编码格式排查
    • 服务器编码格式排查
    • 前端页面编码格式排查

最终发现,是在Navicat连接中,设置了编码格式为utf-8,导致导入的数据在Navicat中看到是正常的,但数据库中是乱码,查询结果也是乱码。这个真的查了好久,没注意到时工具的原因。。

  • 解决办法:重新设置编码格式,导入数据,显示正常

以上就是Oracle换为MySQL遇到的问题及解决的详细内容,更多关于Oracle换为MySQL的资料请关注三水点靠木其它相关文章!

Oracle 相关文章推荐
oracle DGMGRL ORA-16603报错的解决方法(DG Broker)
Apr 06 Oracle
oracle通过存储过程上传list保存功能
May 12 Oracle
Oracle更换为MySQL遇到的问题及解决
May 21 Oracle
ORACLE数据库应用开发的三十个注意事项
Jun 07 Oracle
使用Oracle跟踪文件的问题详解
Jun 28 Oracle
oracle连接ODBC sqlserver数据源的详细步骤
Jul 25 Oracle
Oracle安装TNS_ADMIN环境变量设置参考
Nov 01 Oracle
Oracle数据库中通用的函数实例详解
Mar 25 Oracle
Oracle 多表查询基本语法实例
Apr 18 Oracle
ORACLE中dbms_output.put_line输出问题的解决过程
Jun 28 Oracle
Oracle删除归档日志及添加定时任务
Jun 28 Oracle
oracle覆盖导入dmp文件的2种方法
Oracle 区块链表创建过程详解
zabbix agent2 监控oracle数据库的方法
oracle通过存储过程上传list保存功能
May 12 #Oracle
使用springboot暴露oracle数据接口的问题
mybatis使用oracle进行添加数据的方法
Apr 27 #Oracle
Oracle设置DB、监听和EM开机启动的方法
You might like
php file_put_contents()功能函数(集成了fopen、fwrite、fclose)
2011/05/24 PHP
php5.3中连接sqlserver2000的两种方法(com与ODBC)
2012/12/29 PHP
PHP获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
2013/06/18 PHP
php实现加减法验证码代码
2014/02/14 PHP
详解PHP+AJAX无刷新分页实现方法
2015/11/03 PHP
PHP实现的函数重载功能示例
2018/08/03 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
Prototype使用指南之selector.js说明
2008/10/26 Javascript
JavaScript入门之对象与JSON详解
2011/10/21 Javascript
模拟电子签章盖章效果的jQuery插件源码
2013/06/24 Javascript
javascript如何创建表格(javascript绘制表格的二种方法)
2013/12/10 Javascript
再谈javascript原型继承
2014/11/10 Javascript
JavaScript中检查对象property的存在性方法介绍
2014/12/30 Javascript
百度搜索框智能提示案例jsonp
2016/11/28 Javascript
详解Vue SPA项目优化小记
2018/07/03 Javascript
在 Vue 应用中使用 Netlify 表单功能的方法详解
2019/06/03 Javascript
基于node+vue实现简单的WebSocket聊天功能
2020/02/01 Javascript
基于node+websocket+html实现腾讯课堂聊天室聊天功能
2020/03/04 Javascript
如何区分vue中的v-show 与 v-if
2020/09/08 Javascript
[03:23]我的刀塔你不可能这么可爱 第一期金萌萌的故事
2014/06/20 DOTA
Django框架中render_to_response()函数的使用方法
2015/07/16 Python
在python3.5中使用OpenCV的实例讲解
2018/04/02 Python
python中的插值 scipy-interp的实现代码
2018/07/23 Python
Python实现串口通信(pyserial)过程解析
2019/09/25 Python
Python 面向对象之封装、继承、多态操作实例分析
2019/11/21 Python
python 5个实用的技巧
2020/09/27 Python
美国职棒大联盟的官方手套、球和头盔:Rawlings
2020/02/15 全球购物
中软国际Java程序员笔试题
2014/07/19 面试题
冰淇淋店创业计划书范文
2013/12/27 职场文书
业绩考核岗位职责
2014/02/01 职场文书
家长通知书家长评语
2014/04/17 职场文书
文秘专业应届生求职信
2014/05/26 职场文书
新婚姻法离婚协议书范文
2014/11/30 职场文书
调任通知
2015/04/21 职场文书
世界文化遗产导游词
2019/08/07 职场文书
navicat 连接Ubuntu虚拟机的mysql的操作方法
2022/04/02 MySQL