首页 > 数据库 >迁移:mysql迁移dm8问题处理

迁移:mysql迁移dm8问题处理

时间:2023-09-09 13:22:10浏览次数:46  
标签:语法分析 DATE 出错 mysql dm8 END 迁移 SELECT

问题1

表[xxxxx]中不能同时包含聚集KEY和大字段

处理方法

sp_set_para_value(1,'PK_WITH_CLUSTER',0);
将迁移工具退回输入DM用户名密码的页面再继续下一步,或者关闭当前迁移窗口重新打开迁移任务(PK_WITH_CLUSTER是会话级参数,直接重试会因为本会话的参数未生效而依然报错)

问题2

第 45 行, 第 1 列[GET]附近出现错误: 语法分析出错

处理方法

注释获取异常信息的SQL代码,调用输出错误日志存储过程时,异常信息的参数直接使用SQLCODE与SQLERRM(DM8内置)

原语句

EXCEPTION
WHEN SQLEXCEPTION THEN
BEGIN
GET DIAGNOSTICS CONDITION 1 V_RETURN_CODE = RETURNED_SQLSTATE , V_ERROR_MSG = MESSAGE_TEXT;
CALL ETL.EDW_PROC_ERROR_LOG(V_ACCT_ID,V_START_TIME,NOW(),V_PROC_NAME,V_STEP_ID, V_RETURN_CODE, V_ERROR_MSG);
SET P_RESULT = 1;
END;
END

修改后

EXCEPTION
WHEN SQLEXCEPTION THEN
BEGIN
CALL ETL.EDW_PROC_ERROR_LOG(V_ACCT_ID,V_START_TIME,NOW(),V_PROC_NAME,V_STEP_ID, SQLCODE, SQLERRM);
SET P_RESULT = 1;
END;
END

问题3

第 1 行, 第 102 列[UNSIGNED]附近出现错误: 语法分析出错

处理方法

mysql的INT UNSIGNED的范围类型是0~4294967295,如果应用里面整数范围不超过2147483647就可以用int,如果超过2147483647就用bigint
此处原类型是TINYINT,范围0~255,因此使用int

原语句

CREATE PROCEDURE "adm"."p_wb_cashcheck_declaration_dw"( sDataDate IN CHAR(8) , iResult OUT TINYINT UNSIGNED ) AS
……

修改后

CREATE PROCEDURE "adm"."p_wb_cashcheck_declaration_dw"( sDataDate IN CHAR(8) , iResult OUT INT ) AS
……

问题4

第 47 行, 第 31 列[ENTRY_DATE]附近出现错误: 语法分析出错
第 121 行, 第 73 列[12]附近出现错误: 语法分析出错

处理方法

原语句

SELECT DATE('2023-03-01') + INTERVAL ENTRY_DATE DAY;
SELECT SUBSTR(REPLACE(DATE_SUB(V_DATES,INTERVAL 2 MONTH),'-',''),1, 6);

修改后

SELECT TO_DATE('2023-03-01') + NUMTODSINTERVAL(ENTRY_DATE,'DAY');
SELECT SUBSTR(REPLACE(DATE_SUB(V_DATES,NUMTOYMINTERVAL(2,'MONTH')),'-',''),1, 6);

问题5

第 28 行, 第 22 列[:=]附近出现错误: 语法分析出错

处理方法

达梦为查询结果集生成临时序列可以使用rownum

原语句

SELECT a.*,( i:= i+1) num FROM

修改后

SELECT a.*,rownum num FROM

标签:语法分析,DATE,出错,mysql,dm8,END,迁移,SELECT
From: https://www.cnblogs.com/xj-mrcat/p/17689334.html

相关文章

  • mysql时间段内查询
    mysql时间段内查询(第一种方法)SELECT*FROM 表名WHERE字段名>NOW()-INTERVAL2HOUR;(第二种方法)SELECT*FROM 表名WHERE 字段名>DATE_SUB(NOW(),INTERVAL60MINUTE);今天select*from表名whereto_days(时间字段名)=to_days(now());昨天SELECT* FROM 表名 ......
  • Mysql - WHERE子句
    今天想了解一下flowable是怎么样查询代办的,于是打断点结果发现有一个SQL语句有点意思SELECTDISTINCT RES.*FROM ACT_RU_TASKRESWHERE RES.ASSIGNEE_ISNULL ANDEXISTS( SELECT LINK.ID_ FROM ACT_RU_IDENTITYLINKLINK WHERE LINK.TYPE_='candidate'......
  • 处理MySQL高水位表的相关测试
    文档课题:处理MySQL高水位表的相关测试.数据库:MySQL5.7.21系统:rhel7.31、理论知识MySQL中使用delete删除数据后并不会回收存储空间,而是等待新数据填补该空洞,若无数据填补,则此部分存储空间会造成资源浪费。此时需使用optimizetable释放空间。对于写操作频繁的表,需根据实际情况......
  • 15.mysql数据库安全性
    MySQL数据库的安全性是一个复杂而广泛的主题,它涉及多个方面,包括访问控制、数据保护、身份验证、审计和防止常见的数据库攻击等。以下是一些常见的MySQL数据库安全性最佳实践和示例代码,以帮助您加强MySQL数据库的安全性。请注意,这只是一个起点,实际的安全措施可能因应用程序和......
  • mysql 开启cdc归档日志
    1、介绍mysql开启归档只需要在mysql的 my.ini 中添加几个配置即可(适用版本如下:)2、说明如下:#配置二进制日志,下面的路径logs文件夹需要提前建好log-bin=E:/mariadb-10.4.20-winx64/logs/mysql-bin.log#设置最大存储空间max-binlog-size=50000M#指定服务idser......
  • mysql实现商品分类功能
    目录概述1.0表的创建2.0主分类2.1数据添加与查询3.0子分类3.1数据添加3.2数据查询概述#1.0系统环境:windows10#2.0mysql版本:mysql8.0.2#3.0可视化软件:jetbrainsdatagrip20221.0表的创建#产品(商品)分类功能#分类表createtablecategory(idint2aut......
  • MYSQL如何搭建主从复制
    MYSQL如何搭建主从复制首先要了解为什么要用主从复制,主从复制有什么好处。首先呢,你要实现读写分离就必须要在实现主从复制的前提下,读写分离就是主服务器的数据库(master)修改、删除、增加数据,而从服务器(slave)实现读操作。MySQL读写分离是一种数据库架构设计策略,旨在分离处理数......
  • MySQL搭建主从架构
    下载docker镜像dockerpullmysql创建两个容器dockerrun-d-p3310:3306-eMYSQL_ROOT_PASSWORD=pwd1--namemysql-01mysqldockerrun-d-p3311:3306-eMYSQL_ROOT_PASSWORD=pwd2--namemysql-02mysql连接测试可以使用阿里云的DMS或者DataGrip等客户端来连接......
  • laravel 通过事务处理两个并发请求同时更新同一条 MySQL 数据
    在处理两个并发请求同时更新同一条MySQL数据的情况时,你需要考虑并发冲突的问题,以确保数据的一致性和完整性。以下是一些解决方法:在Laravel中,你可以使用数据库事务来处理并发更新。在事务中,你可以执行一系列操作,并在操作完成后提交或回滚事务。如果两个请求同时尝试更新相同的......
  • MySQL查询命令练习(一)
    如果需要详细的命令总结在我--软件测试--个人分类里,不想翻阅的话点这个连接也可以哈《MySQL命令总结》https://blog.51cto.com/u_16239770/7383954添加记录语法格式--指定列插入数据INSERTINTO表名(列名1,列名2)VALUES(列值1,列值2);--全部列插入数据 INSERTINTO表名VALUE......