mysql 8.0 迁移到kingbase v8r6 不兼容之处记录

本文以kingbase 为解释主体

一.  函数

1.无 sysdate(),可以使用  current_timestamp() 替换

SELECT  CURRENT_TIMESTAMP()

2.计算前几天

 不能 执行  now() + interval -1 day,可以使用 date_sub( n, unit) 替换; 或者 改为 now- interval '1' day

SELECT now(), now()- INTERVAL '1' day as yesteday

-- 前三天
SELECT DATE_SUB(CURRENT_TIMESTAMP(), INTERVAL '3' DAY);

3.STR_TO_DATE不存在, 可以用to_date( n , format)替换

SELECT    to_date('1970-01-01 08:00:00', 'yyyy-MM-dd hh24:mi:ss')

4. SYS_GUID 替换 UUID

SELECT  SYS_GUID() 

OUTPUT:  731A8C7CECC14076ACBFC10225F3FEA9

5.IFNULL( EXP, '')  若exp是数值类型如int ,且EXP不为空, 则 返回的类型是int  ,想要以字符串的形式返回,需做强制类型转换

CAST( IFNULL (EXP, ''))  返回的是字符串

6. 无 year(date), 有 year(text),  

-- 获取当前年份

SELECT EXTRACT(YEAR FROM now()) AS year 

二. 序列

MySQL 8 中无序列类型,需自定定义, kingbase中有序列。以下是定义和相关函数

CREATE TEMP SEQUENCE testseq;
SELECT nextval('testseq');
SELECT currval('testseq');
SELECT nextval('testseq');
SELECT currval('testseq');

### MySQL迁移Kingbase的方法和注意事项 #### 方法概述 将MySQL数据库迁移Kingbase涉及多个步骤和技术细节。通常推荐使用Kingbase自带的迁移工具来完成这一过程,因为它提供了更为细致的功能支持[^1]。此外,《金仓数据库 KingbaseES 异构数据库移植指南》也提供了一份详尽的应用迁移流程说明,涵盖了整个迁移过程中可能遇到的关键节点以及具体的操作指导[^2]。 #### 数据库迁移的具体步骤 以下是基于已有经验总结的一些核心环节: 1. **资源准备** - 下载并安装Kingbase的相关组件,包括但不限于官方提供的安装包、授权文件(如果需要)、JDBC驱动程序以及其他辅助工具[^3]。 - 特别注意的是,在正式环境中运行前应确保获取合法有效的许可证书;对于测试环境则可利用其免费试用功能先行验证效果。 2. **数据结构转换** - 使用Kingbase提供的专用迁移工具执行表定义、索引及其他元数据对象从源端(MySQL)向目标端(Kingbase) 的映射工作。 - 此阶段需仔细核对两者的差异之处,比如字符集设定、存储引擎特性匹配等问题,并作出相应调整以保障最终一致性。 3. **数据导入与校验** - 将原有生产数据通过批量加载方式传入新的Kingbase实例当中。 - 进行全面的数据质量检查,确认无误后再继续后续操作。 4. **应用层改造** - 鉴于不同品牌间可能存在某些内置函数或者特殊语法上的不兼容情况(例如`sysdate()`),所以有必要针对这部分内容重新编写实现逻辑[^4]。 ```sql -- 创建自定义SYS_DATE函数用于替代原有的MYSQL版本 CREATE OR REPLACE FUNCTION sysdate() RETURNS TIMESTAMP WITH TIME ZONE AS $$ BEGIN RETURN CURRENT_TIMESTAMP; END; $$ LANGUAGE plpgsql IMMUTABLE STRICT; ``` 5. **性能优化调优** - 对新部署后的系统进行全面的压力测试分析找出潜在瓶颈所在位置; - 利用诸如`VACUUM ANALYZE`命令更新统计信息从而提高查询效率。 #### 注意事项清单 - 确认所有必要的依赖项均已妥善处理完毕之后再启动整体切换计划。 - 提前规划好停机维护窗口期以便顺利完成过渡期间的各项任务安排。 - 整个项目实施进程中保持良好沟通机制及时反馈进展状态给各方利益相关者知晓。 ```bash # 示例:检查kingbase服务状态 sudo systemctl status kingbase ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值