为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
【操作系统】:
【CPU】:
【问题描述】*:达梦数据库与mysql同样的建表语句,字段存储不一致,比如在mysql中varchar(20)能存储20个字符,在达梦中不能,可以设置吗
mysql5之后的版本,varchar和char是以字符为单位,达梦默认以字节为单位。
varchar(n char),char(n char)可以满足你的需求
1、有批量的调整varchar和varchar字段的sql,查出来后复制结果,在达梦manager工具执行就可以,转化成以字符为存储单位
SELECT 'ALTER TABLE '||OWNER||'.'||TABLE_NAME||' MODIFY '||COLUMN_NAME||' '||DATA_TYPE||'('||DATA_LENGTH||' CHAR);'
FROM DBA_TAB_COLS
WHERE DATA_TYPE IN ('VARCHAR','VARCHAR2') AND OWNER='RANKS'
需要注意2点:
在业务低峰期执行
在执行批量修改字段类型前,先备份数据库数据
2、如果是新库的话,可以用上述老师说的方法dts工具迁移表结构的时候进行配置,重新迁移表结构和表数据
您是要单独修改某个字段还是所有表的字段varchar和varchar2都修改

达梦可以使用varchar(20 char) 也是20个字符