问题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