zoukankan      html  css  js  c++  java
  • oralce迁移Mysql问题总结

    最近从oracle数据库迁移到Mysql, 总结了一些不兼容和需要注意的地方,持久层用的Mybatis

    1 guid尽量用代码生成

    现象:sys_guid()  mysql报错,mysql对应的为UUID(),但是带横线,需要替换为  replace(uuid(),'-',''),所以最好用代码生成, 这样直接就通用了

    2 最好不用nvl、ifnull等特性函数

    现象:nvl为oracle特性函数,在mysql报错,统一替换为case when then else end

    3 子查询请带上别名

    现象:子查询不带别名oracle可以通过,mysql语法错误

    4 最好不用decode()函数

    现象:同nvl,替换为case when then else end

    5 删除语句不要给表加别名

    现象:mysql删除语句不支持表别名(但是Oracle支持,所以为了通用删除时不要使用别名)

    6 删除语句最好加上from关键字

    现象:   mysql删除必须是delete from  table,oracle可以是delete table为了通用要加上from

    7 字段别名统一大写

    现象:mysql没有自动转换为大写,oracle会自动转换为大写,为了代码能统一取值,别名统一大写

    8 分页查询没有找到兼容的写法,找到简单改写方法

    简单修改的办法:rownum替换为@num,不然就是重新写一个mysql分页

    原oracle

     

     

     

    mysql

     

     

     

    9 批量插入不要用insert all,用兼容写法

    现象:insert all等语法mysql不支持,报错

    改为

     

     

    10 日期无法兼容,有转换方法

    现象:之前的to_date写法导致Mysql报错

    改为拆分两份

     

     

    11不用 || 连字符

    现象:mysql不支持,统一改为concat(str,str2)函数

    12 concat函数只能使用两个参数

    现象:不能使用concat(str,str2,str3),mysql支持,oracle不支持

    13 wm_concat()行列转换无法兼容,有转换方法

    方案:oracle wm_concat() 对应mysql group_concat()

    14 从oracle迁移到mysql的数据,number类型被Mysql默认成了这个鬼样子(不确定是不是迁移引起)

    现象:mysql显示类型

     

     

    导致报错

     

     

    方案:修改字段小数点为0,如果确定不是迁移过程引起,则需要整理脚本统一修改

    其实1、2、3、4、5、6、7、9、11、12项是可以加入开发规范和开发禁用列表的

     

  • 相关阅读:
    DOM操作 append prependTo after before
    Vue(2)- v-model、局部组件和全局组件、父子组件传值、平行组件传值
    Vue(1)- es6的语法、vue的基本语法、vue应用示例,vue基础语法(转)
    Linux环境下虚拟环境virtualenv安装和使用(转)
    REST、DRF(View源码解读、APIView源码解读)
    超哥的 LINUX 入门大纲
    redis入门
    CRM总结
    如何搭建一个vue项目(完整步骤)
    DRF 视图
  • 原文地址:https://www.cnblogs.com/cs-forget/p/7977853.html
Copyright © 2011-2022 走看看