华为云用户手册

  • 操作场景 标签管理服务(Tag Management Service,TMS)用于用户在云平台,通过统一的标签管理各种资源。TMS服务与各服务共同实现标签管理能力,TMS提供全局标签管理能力,各服务维护自身标签管理 。 建议您先在TMS系统中设置预定义标签。 标签由“键”和“值”组成,每个标签中的一个“键”只能对应一个“值”。 每个UGO项目最多支持添加20个标签。 用户可在创建数据库评估或对象迁移项目时添加标签,也可在项目创建成功后再添加标签。
  • 三权分立检查 目标库为 GaussDB 时,会进行三权分立检查。GaussDB三权分立后,系统管理员即拥有SYSADMIN权限的用户将不再具有CREATEROLE属性(安全管理员)和AUDITADMIN属性(审计管理员)能力,即不再拥有创建角色和用户的权限,也不再拥有查看和维护数据库审计日志的权限。在UGO的对象迁移功能上,体现为开启三权分立后,SYSADMIN用户无法完成USER、ROLE、GRANT的迁移。 目标库为GaussDB时,开启三权分立,并迁移用户为SYSADMIN时,才会展现此检查项,其余情况,此检查项均不展示。 在开启三权分立后,如果SYSADMIN用户继续拥有安全管理员(拥有CREATEROLE权限)和审计管理员权限,这是来回切换权限模型导致的。如需从非三权分立权限管理模型切换至三权分立权限管理模型,应重新审视已有用户的权限集合,进行权限裁剪。
  • 导入模板文件 当需要跨云上账户,导入其他账户中预设好并导出的转换配置模板文件时,请在“导入模板文件”页签内创建转换模板。如何导出转换配置模板,请参考导出转换配置模板。 登录UGO控制台。 单击左侧导航栏“转换配置管理”,进入转换配置管理页面。 单击“创建配置模板”,进入“创建配置模板”页面,单击“导入模板文件”按钮,进入“导入模板文件”页签。 单击“添加文件”按钮,上传其他实例导出的ugotmplt格式模板文件,系统会识别并展示“模板名称”、“源数据库类型”、“目标数据库类型”和预设好的“特性配置”列表。 图2 通过导入模板文件创建配置模板 (可选)在配置项列表中,根据当前UGO实例需要迁移的数据库场景,进行微调。
  • 描述 数据库类型与版本 源库类型与版本:MySQL 5.5、5.6、5.7、8.0版本。 目标库类型与版本:GaussDB分布式版。 语法示例 如果UGO判断出GaussDB分布式表的分布键不是主键及唯一键的超集,则会生成此错误提示。 实际上在GaussDB中INSERT ON DUPLICATE KEY UPDATE语句不支持用于带全局二级索引(GSI)的表中,而在GaussDB分布式中如果指定的分布键不是主键及唯一键的超集,则数据库会自动创建全局二级索引,如下示例在GaussDB分布式中不支持。 CREATE TABLE demo ( id INT PRIMARY KEY, info VARCHAR(10), email VARCHAR(10), UNIQUE (id, info) ) DISTRIBUTE BY HASH(email); INSERT INTO demo VALUES (10, 'AA', 'BB'), (4, 'EE', 'EE') ON DUPLICATE KEY UPDATE email = VALUES(email);
  • 描述 数据库类型与版本 源库类型与版本:MySQL 5.5、5.6、5.7、8.0版本。 目标库类型与版本:GaussDB M兼容。 语法示例 当MySQL未启用严格模式(即sql_mode中不包含NO_ZERO_DATE)时,允许TIMESTAMP类型的字段保存'0000-00-00 00:00:00'值,但是GaussDB M兼容TIMESTAMP类型的取值范围为:1970-01-01 00:00:01' UTC ~ 2038-01-19 03:14:07' UTC,不支持'0000-00-00 00:00:00'。如下示例在GaussDB M兼容中将不支持。 create table test_timestamp ( id int, c_timestamp timestamp not null default '0000-00-00 00:00:00' );
  • 改造建议 修改“TIMESTAMP类型'0000-00-00 00:00:00'值的转换”转换配置项,将'0000-00-00 00:00:00'转换为'1970-01-02 00:00:00'。 在MySQL中通常用'0000-00-00 00:00:00'表示该字段的值尚未被明确设定,或者在某些情况下,表示无效的日期时间值,但是如果业务中使用了该值做判断,则转换后需要排查业务将相关的判断替换成转换后的时间日期值。
  • 描述 当在 Oracle 中使用 SELECT INTO FOR UPDATE 方式调用 DBE_LOB 高级包中的 append、writeappend、write、copy 等存储过程对于 BLOB/CLOB 数据类型进行写操作时,Oracle 会自动更新数据表中的 BLOB/CLOB 对象。而 GaussDB 不支持自动更新至表,需显式执行 UPDATE 语句。当 UGO 无法验证列是否为 BLOB/CLOB 数据类型时无法自动添加 UPDATE 语句,需要人工确认数据类型,当确认为 BLOB/CLOB 数据类型时,手动修改补充 UPDATE 语句。 数据库类型与版本 源库类型与版本:UGO 支持的 Oracle 版本。 目标库类型与版本:UGO 支持的 GaussDB 版本。 语法示例 CREATE OR REPLACE PACKAGE BODY "PICCPROD"."PKG_TRANSFER_FORMAT_TP" is PROCEDURE p_create_dsic_10301_0004( i_organ_id IN VARCHAR, i_bank_code IN VARCHAR, i_send_id IN NUMBER, o_scce_flag OUT NUMBER )AS p_clob1 CLOB; p_offset INTEGER:=0; p_info1 VARCHAR2(200); BEGIN SELECT send_text INTO p_clob1 FROM t_bank_text WHERE send_id = i_send_id FOR UPDATE; DBMS_LOB.WRITE(p_clob1,LENGTH(p_info1),p_offset+1,p_info1); p_offset := p_offset + length(p_info1); RETURN; END; end PKG_TRANSFER_FORMAT_TP; /
  • 改造建议 对于上述示例,若确认 t_bank_text 表中的 send_text 列为 BLOB/CLOB 数据类型时,则需要在其下方补充 UPDATE 语句: DBMS_LOB.WRITE(p_clob1,LENGTH(p_info1),p_offset+1,p_info1); 转换为 DBE_LOB.LOB_WRITE(p_clob1,LENGTH(p_info1),p_offset+1,p_info1); UPDATE t_bank_text SET send_text = p_clob1 WHERE send_id = i_send_id;
  • 描述 数据库类型与版本 源库类型与版本:MySQL 5.5、5.6、5.7、8.0版本。 目标库类型与版本:GaussDB所有版本。 语法示例 默认情况下,UGO将注释掉临时表的AUTO_INCREMENT属性,如果“临时表自增列”转换配置项选择“忽略迁移,记录错误信息。”将生成此错误提示。 如U0400010所述,GaussDB集中式版V2.0-3.1版本之前不支持AUTO_INCREMENT属性,AUTO_INCREMENT默认转换成自定义序列的形式。但是GaussDB临时表不支持序列整型(自定义序列的话无法将序列与表形成绑定关系),如下示例在GaussDB中将不支持。 CREATE TEMPORARY TABLE temp_tale_test( id SERIAL, test varchar(64) );
  • 描述 数据库类型与版本 源库类型与版本:所有涉及视图WITH CHECK OPTION的源数据库类型。 目标库类型与版本:GaussDB所有版本。 语法示例 默认情况下,UGO保留视图WITH CHECK OPTION子句不转换,并生成此错误提示。 GaussDB视图不支持指定WITH CHECK OPTION子句,如下示例在GaussDB中不支持。 CREATE OR REPLACE VIEW view_demo AS SELECT * FROM emp_t WHERE deptno = 10 WITH CASCADED CHECK OPTION;
  • 操作步骤 集中式版 连接上 GaussDB数据库 ,切换至GaussDB的安装用户下。 su - omm "omm"为示例用户,切换时以实际安装用户为准。 执行以下命令,设置参数。 gs_guc reload -Z coordinator -Z datanode -N all -I all -c "b_format_behavior_compat_options='enable_set_variables'"; gs_guc reload -Z coordinator -Z datanode -N all -I all -c "b_format_version='5.7'"; gs_guc reload -Z coordinator -Z datanode -N all -I all -c "b_format_dev_version='s1'"; 分布式版 连接上GaussDB数据库,切换至GaussDB的安装用户下。 su - omm "omm"为示例用户,切换时以实际安装用户为准。 执行以下命令,设置参数。 gs_guc reload -Z coordinator -Z datanode -N all -I all -c "b_format_version='5.7'"; gs_guc reload -Z coordinator -Z datanode -N all -I all -c "b_format_dev_version='s1'";
  • 兼容模式设置 GaussDB MySQL语法兼容模式包括:集中式版B兼容模式、集中式版M兼容模式以及分布式版MYSQL兼容模式。 目标库为GaussDB,且源库为MySQL/GoldenDB数据库迁移时,默认往GaussDB MySQL语法兼容模式迁移,因此建议创建MySQL语法兼容数据库。 创建MySQL语法兼容类型数据库。 使用具有创建数据库权限的用户登录GaussDB数据库。 执行以下命令,创建MySQL兼容模式的GaussDB数据库。 集中式版B兼容: create database databasename dbcompatibility = 'B'; 集中式版M兼容: create database databasename dbcompatibility = 'M'; 分布式: create database databasename dbcompatibility = 'MYSQL'; 执行以下命令,查看是否创建成功。 select * from pg_database where datname = 'databasename'; 集中式版B兼容:若datcompatibility兼容性一列为B,则MySQL兼容数据库创建成功。 集中式版M兼容:若datcompatibility兼容性一列为M,则M兼容数据库创建成功。 分布式:若datcompatibility兼容性一列为MySQL,则MySQL兼容数据库创建成功。
  • GUC参数设置 当使用MySQL兼容模式,可以设置GUC参数提高GaussDB的兼容性,迁移涉及的GUC参数和影响范围可参见表1。 GaussDB数据库提供了许多运行参数,配置这些参数可以影响数据库系统的行为。在修改这些参数时请确保用户理解了这些参数对数据库的影响,否则可能会导致无法预料的结果。 表1 GaussDB(MySQL兼容模式)的GUC参数 兼容B行为配置项 兼容性配置项 兼容性配置项名字 支持的数据库 是否建议打开 b_format_behavior_compat_options enable_set_variables 仅限集中式版会话变量生效。 集中式版 是 b_format_version 5.7 数据库平台兼容性行为配置项。 GaussDB V2.0-8.0 集中式版/分布式版 是 b_format_dev_version S1 数据库平台迭代小版本兼容性行为配置项。 GaussDB V2.0-8.0 集中式版/分布式版 是 S2 数据库平台迭代小版本兼容性行为配置项。 GaussDB V2.0-8.100 集中式版/分布式版 是 b_format_dev_version参数设置: GaussDB V2.0-8.0企业版,设置为s1。 GaussDB V2.0-8.100企业版,设置为s2。 S1兼容性配置项所影响的内容: NEW()函数、last_day()函数、date_sub(date, INTERVAL expr unit)、datediff(expr1, expr2)、day()/dayofmonth()、dayname() dayofweek()、dayofyear()、extract(unit FROM date)、from_days(days)、from_unixtime(unix_timestamp[,format])、get_format({DATE | TIME | DATETIME | TIMESTAMP}, {'EUR' | 'USA' | 'JIS' | 'ISO' | 'INTERNAL'})、 hour()、makedate(year,dayofyear)、microsecond()、minute()、month()、monthname()、 period_add(period, month_number) TIMESTAMPDIFF、yearweek(date[, mode])、year()、weekofyear(date)、 weekday()、week(date[, mode])、utc_timestamp()、utc_time()、period_diff(p1,p2)、second(). quarter()、str_to_date(str, format)、subdate(expr, days)、time_format(time, format)、ifnull(expr1, expr2)、database()、current_date、current_time、current_timestamp round(arg1, arg2)、localtime([precision])、localtimestamp、dbtimezone、timenow()、numtodsinterval(num, interval_unit)、numtoyminterval(num, interval_unit) new_time(date, timezone1,timezone2)、sysdate([precision])、add_months(d,n)、months_between(d1, d2)、convert_tz(dt, from_tz, to_tz) adddate(date, INTERVAL expr unit)、date_format(date, format) S2兼容性配置项所影响的内容: 包含s1控制的兼容性行为。 影响如下功能: AUTO_INCREMENT自动增长列在导入数据或者进行BATCH INSERT执行计划的插入操作时,对于混合0、NULL和确定值的场景,确定值插入时会立即更新自增计数,后续的0/NULL将在确定值的基础上自增。 like操作符对于匹配串末尾是转义符的场景不再报错。 字符集、字符序的排序规则优先级将发生变更。 影响如下语法: CREATE TABLE table_name LIKE source_table语法。 CREATE TABLE table_name LIKE source_table和“CREATE TABLE table_name (LIKE source_table)”语法不支持指定INCLUDING和EXCLUDING选项,缺省等同于指定INCLUDING ALL。 支持LOAD DATA语法,gs_loader中部分与LOAD DATA语法一致的语法功能会发生变化。 支持set names指定collate子句。 涉及ALTER TABLE,RENAME TABLE等更改表名的语法,影响场景如:新表名对应字符串开头为“#MySQL50#”,且其后有其他字符,“#MySQL50#”将被忽略。
  • 描述 数据库类型与版本 源库类型与版本:所有源数据库类型。 目标库类型与版本:GaussDB M兼容模式。 语法示例 在GaussDB中,如下标识符是系统列名,用户自定义表中不允许使用这些标识符作为列名。 CTID, XMIN, CMIN, XMAX, CMAX, TABLEOID, XC_NODE_ID, TID, GS_TUPLE_UID, TABLEBUCKETID。如下示例在GaussDB中将不支持。 CREATE TABLE ctid_test(ctid INT); 迁移到GaussDB M兼容模式时,如果表列定义中使用了上述标识符作为列名,将保留这些列名不转换,并生成此错误提示。 迁移到GaussDB非M兼容模式时,如果表列定义中使用了上述标识符作为列名,会默认进行加双引号并转换成全大写处理(其中TID作为自定义列名从GaussDB集中式版V2.0-8.0版本开始支持,分布式版V2.0-8.100版本开始支持,在支持的版本中将保留TID作为列名不做处理)。
  • 描述 数据库类型与版本 源库类型与版本:PostgreSQL 所有版本。 目标库类型与版本:GaussDB 所有版本。 语法示例 PostgreSQL 的 jsonb_query_path 函数允许你使用 JSONPath 表达式来从 jsonb 数据中提取特定的信息。当只有两个参数时,UGO 会将 jsonb_query_path 函数转换成 GaussDB 的 jsonb_extract_path 函数,当函数参数大于两个时,UGO 将不进行转换,保持原样输出。 GaussDB 的 jsonb_extract_path 函数根据指定的路径从 jsonb 数据中提取特定信息,但是 jsonb_extract_path 函数需要指定明确的路径,不支持条件过滤、不支持 '*' 通配符等场景,当 jsonb_query_path 函数的 JSONPath 表达式中存在 jsonb_extract_path 不支持的路径时将生成此错误提示。如下所示: SELECT jsonb_path_query(data, '$.address.*') FROM users; SELECT jsonb_path_query(data, '$.hobbies[*]') FROM users; SELECT jsonb_path_query(data, '$.hobbies[?(@ == "reading")]') FROM users;
  • 描述 数据库类型与版本 源库类型与版本:MySQL 5.5、5.6、5.7、8.0版本。 目标库类型与版本:GaussDB分布式版。 语法示例 默认情况下,UGO保留MySQL的排序规则不转换,并生成此错误提示。 GaussDB不同版本支持的字符集不同,而字符排序规则与字符集的选择强相关,如下示例在GaussDB V2.0-8.0版本中不支持。 CREATE TABLE collate_demo(id INT, name VARCHAR(64)) COLLATE utf8mb3_general_ci;
  • 改造建议 修改“排序规则”转换配置项,可以选择注释掉所有的排序规则,也可以选择仅注释掉GaussDB不支持的排序规则,保留支持的排序规则(需要注意这里的支持仅表示GaussDB支持该排序规则,并没有判断表与库之间的在字符集/排序规则上是否存在冲突)。 建议初始化GaussDB数据库时指定与源库字符集兼容的字符集,迁移过程中注释掉建表语句中的所有字符集和排序规则,使用GaussDB数据库默认的字符集和排序规则。如果原有表的字符集/排序规则与数据库字符集/排序规则不一致,需要您充分评估风险与影响。更多GaussDB字符序的相关信息请参考《GaussDB开发者指南》。
  • 描述 GaussDB M 兼容不支持 SELECT FOR UPDATE、SELECT FOR SHARE、LOCK IN SHARE MODE 与聚合函数或窗口函数一起使用。 数据库类型与版本 源库类型与版本:MySQL 5.5、5.6、5.7、8.0 版本。 目标库类型与版本:GaussDB M 兼容。 语法示例 SELECT max(id) FROM test_lock1 FOR UPDATE;
  • 描述 数据库类型与版本 源库类型与版本:MySQL 5.5、5.6、5.7、8.0版本。 目标库类型与版本:GaussDB所有版本。 语法示例 如果重命名后的表名中带SCHEMA,UGO转换时会将该SCHEMA名删除,并生成此错误提示。 GaussDB的ALTER TABLE语句重命名表时不允许新表名指定SCHEMA名称,如下示在GaussDB中将不支持。 ALTER TABLE schema_name.table_name RENAME TO new_schema_name.new_table_name;
  • 描述 GaussDB不支持interval分区进行子分区。 数据库类型与版本 源库类型与版本:UGO 支持的 Oracle 版本。 目标库类型与版本:UGO 支持的 GaussDB 版本。 语法示例 CREATE TABLE range_interval ( Prod_id NUMBER(6), time_id TIMESTAMP ) PARTITION BY RANGE (time_id) INTERVAL(numtoyminterval(2 ,'month')) SUBPARTITION BY LIST (prod_id) ( PARTITION p1 VALUES LESS THAN (to_date('2023-02-01','yyyy-mm-dd')) ( SUBPARTITION p_202301_a VALUES (1) ), PARTITION p2 VALUES LESS THAN (to_date('2023-03-01','yyyy-mm-dd')) ( SUBPARTITION p_202303_a VALUES (3) ) );
  • 描述 GaussDB M 兼容不支持 SELECT FOR UPDATE、SELECT FOR SHARE、LOCK IN SHARE MODE 与 GROUP BY/HAVING 一起使用。 数据库类型与版本 源库类型与版本:MySQL 5.5、5.6、5.7、8.0 版本。 目标库类型与版本:GaussDB M 兼容。 语法示例 SELECT code FROM test_lock1 GROUP BY code FOR UPDATE;
  • 描述 GaussDB 不支持anydata数据类型以及构造方法,分普通类型以及构造方法(Convert*,Access*,Get*)和复合类型以及构造方法(ConvertObject,GetObject)。 数据库类型与版本 源库类型与版本:UGO 支持的 Oracle 版本。 目标库类型与版本:UGO 支持的 GaussDB 版本。 语法示例 示例1:普通类型以及构造方法 CREATE TABLE t1( c1 sys.anydata);
  • 描述 Oracle中 DBMS_SQL.TO_CURSOR_NUMBER 的作用是获取游标的编号,GaussDB不支持该函数。 数据库类型与版本 源库类型与版本:UGO 支持的 Oracle 版本。 目标库类型与版本:UGO 支持的 GaussDB 版本。 语法示例 DECLARE l_ref_cur SYS_REFCURSOR; l_dbms_sql_cursor NUMBER; BEGIN -- 打开REF CURSOR OPEN l_ref_cur FOR SELECT 'Hello, DBMS_SQL!' AS message FROM dual; -- 转换为DBMS_SQL游标号 l_dbms_sql_cursor := DBMS_SQL.TO_CURSOR_NUMBER(l_ref_cur); DBMS_OUTPUT.PUT_LINE('转换后的游标号: ' || l_dbms_sql_cursor); -- 记得关闭游标 DBMS_SQL.CLOSE_CURSOR(l_dbms_sql_cursor); END; /
  • 改造建议 注释DBMS_SQL.TO_CURSOR_NUMBER,使用DBE_SQL.REGISTER_CONTEXT+DBE_SQL.SQL_SET_SQL+DBE_SQL.SQL_RUN三个高级包函数等效实现。 GaussDB改写后: DECLARE l_ref_cur SYS_REFCURSOR; l_dbms_sql_cursor NUMBER; BEGIN -- 打开REF CURSOR OPEN l_ref_cur FOR SELECT 'Hello, DBMS_SQL!' AS message FROM dual; -- 转换为DBMS_SQL游标号 --l_dbms_sql_cursor := DBMS_SQL.TO_CURSOR_NUMBER(l_ref_cur); l_dbms_sql_cursor := DBE_SQL.REGISTER_CONTEXT(); DBE_SQL.SQL_SET_SQL( l_dbms_sql_cursor,l_ref_cur,2); DBE_SQL.SQL_RUN( l_dbms_sql_cursor); DBE_OUTPUT.PRINT_LINE('转换后的游标号: ' || l_dbms_sql_cursor); -- 记得关闭游标 DBE_SQL.SQL_UNREGISTER_CONTEXT(l_dbms_sql_cursor); END; /
  • Oracle To GaussDB GaussDB只支持普通的SYNONYM同义词,不支持PUBLIC同义词。UGO会将Oracle中的PUBLIC同义词转换为GaussDB中public Schema下的普通同义词对象,从而实现与Oracle中等效的功能,可参见表1。 当您的数据库中不同用户拥有同名的public同义词时,该方案会将两个用户的同义词对象均转换到public Schema下,造成同义词对象冲突,所以需要对不同用户中同名的同义词完成本地改造后再进行迁移,可参考下表表2。 表1 语法转化1 Oracle源库中sql语句 GaussDB目标库转化后的sql语句 CREATE PUBLIC SYNONYM u1.syn FOR u1.object1; CREATE SYNONYM public.syn FOR u1.object; 表2 语法转化2 Oracle源库中sql语句 GaussDB目标库转化后的sql语句 是否存在同义词冲突 CREATE PUBLIC SYNONYM u1.syn FOR u1.object1; CREATE SYNONYM public.syn FOR u1.object1; 否 CREATE PUBLIC SYNONYM u2.syn FOR u1.object2; CREATE SYNONYM public.syn FOR u2.object2; 是 父主题: 语法转换说明
  • 描述 所有GaussDB版本当前无与Oracle中SYS_OP_MAP_NONNULL同等功能的函数。在Oracle数据库中,SYS_OP_MAP_NONNULL是一个内部使用的包中的函数,通常用户处理索引组织表或与索引相关的操作,这个函数主要是用来支持内部机制,并非是为普通用户或开发人员使用的。 数据库类型与版本 源库类型与版本:UGO 支持的 Oracle 版本。 目标库类型与版本:UGO 支持的 GaussDB 版本。 语法示例 SELECT * FROM TEST_TBL WHERE SYS_OP_MAP_NONNULL(col1)=SYS_OP_MAP_NONNULL(col2);
  • 改造建议 修改“set数据类型转换”转换配置项,可以选择将SET类型转换为VARCHAR类型,并可以选择是否添加触发器来实现数据校验。请注意,不添加触发器的情况下需要业务端保证数据完整性约束;添加触发器的情况下可能会影响使用性能,并提升数据库系统的维护难度,需要您充分评估业务影响。 请注意,默认情况下,上述示例在MySQL中,允许set_test字段的值为小写'a', 'b', 'c'以及空串,这在GaussDB B兼容模式中是不允许的,M兼容模式和MySQL一致。大小写是否敏感与数据库大小写默认行为有关,详情请参考U0400023。
  • 描述 数据库类型与版本 源库类型与版本:MySQL 5.5、5.6、5.7、8.0版本。 目标库类型与版本:GaussDB 集中式版 B 兼容模式 V2.0-3.1 及之前版本,M 兼容模式 V2.0-8.100 版本,GaussDB 分布式版。 语法示例 如下示例建表语句中使用了 SET 数据类型,当选择了上述不支持 SET 数据类型版本的 GaussDB 时,UGO 将提示此错误。 CREATE TABLE set_test ( id int NOT NULL PRIMARY KEY, set_test set('A', 'B', 'C') DEFAULT NULL );
  • 改造建议 1、修改“表列定义on update选项”转换配置项,可以选择通过触发器的形式实现ON UPDATE的功能。请注意,触发器可能会影响使用性能,并提升数据库系统的维护难度,需要您充分评估业务影响。 2、也可以参考以下示例,手动修改注释掉ON UPDATE子句。 CREATE TABLE demo ( id INT, name VARCHAR(255) DEFAULT null, create_time TIMESTAMP WITH TIME ZONE DEFAULT (CLOCK_TIMESTAMP())::TIMESTAMP(0) WITH TIME ZONE, update_time TIMESTAMP WITH TIME ZONE DEFAULT (CLOCK_TIMESTAMP())::TIMESTAMP(0) WITH TIME ZONE /*ON UPDATE CURRENT_TIMESTAMP*/ ); 此时需要在每次更新demo表时都显式更新update_time字段的值,保证数据的准确性。
  • 描述 数据库类型与版本 源库类型与版本:MySQL 5.5、5.6、5.7、8.0版本。 目标库类型与版本:GaussDB V2.0-3.2及之前的版本。 语法示例 默认情况下,UGO保留ON UPDATE子句不转换,并生成此错误提示。 GaussDB V2.0-3.2及之前的版本不支持表列定义中指定ON UPDATE子句,如下示例将不支持。 CREATE TABLE demo ( id INT, name VARCHAR(255) DEFAULT null, create_time TIMESTAMP WITH TIME ZONE DEFAULT (CLOCK_TIMESTAMP())::TIMESTAMP(0) WITH TIME ZONE, update_time TIMESTAMP WITH TIME ZONE DEFAULT (CLOCK_TIMESTAMP())::TIMESTAMP(0) WITH TIME ZONE ON UPDATE CURRENT_TIMESTAMP );
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全