【 使用环境 】测试环境
【 OB or 其他组件 】OceanBase All in One
【 使用版本 】4.3.5.0
【问题描述】从MariaDB数据库通过mysqldump命令导出的数据库,在OceanBase数据库导入时报错:ERROR 1067 (42000) at line 10666: Invalid default value for ‘share_image’
【复现路径】问题出现前后相关操作
【附件及日志】share_image字段类型是text,默认值是空字符串’’
发一下sql文本,share_image字段的相关信息发一下 或者直接把字段属于的表结构发一下
以下是这个字段所在表原来在MariaDB数据库里的结构,sql文本太大了,好几个GB,没法发
CREATE TABLE general_questionnaire
(
id
bigint(20) NOT NULL AUTO_INCREMENT COMMENT ‘表主键’,
is_del
tinyint(1) NOT NULL DEFAULT 0 COMMENT ‘是否删除’,
create_time
datetime NOT NULL DEFAULT current_timestamp() COMMENT ‘创建时间’,
create_by
bigint(20) NOT NULL COMMENT ‘创建人’,
update_time
datetime NOT NULL DEFAULT current_timestamp() COMMENT ‘更新时间’,
update_by
bigint(20) NOT NULL COMMENT ‘更新人’,
final_change_time
datetime NOT NULL DEFAULT current_timestamp() COMMENT ‘最后变更时间’,
title
varchar(50) NOT NULL COMMENT ‘问卷标题’,
is_using
tinyint(1) NOT NULL DEFAULT 0 COMMENT ‘问卷是否启用’,
description
varchar(255) DEFAULT NULL COMMENT ‘备注’,
deadline
datetime DEFAULT NULL COMMENT ‘答题截止时间’,
type
int(4) DEFAULT 0 COMMENT ‘问卷类型 0:问卷模板;1:任务问卷’,
share_image
text NOT NULL DEFAULT ‘’ COMMENT ‘问卷分享图片’,
target_type
int(4) NOT NULL DEFAULT 0 COMMENT ‘问卷对象类型’,
PRIMARY KEY (id
)
) ENGINE=InnoDB AUTO_INCREMENT=76 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT=‘问卷调查表’;
下面是sql文件里insert语句的一部分截图
原因应该是OB的text类型不支持空字符串作为默认类型
这个没办法解决吗?只能修改原表结构吗?
关键是不知道原数据库里有多少张表的多少个字段有这样的设置啊
你可以通过语句过滤一下
怎么过滤?给个例子???
先找一下所有列是text类型的 可以根据这个表过滤 information_schema.columns
为什么会有这样的设定呢?是出于什么原因呢?还是说这是一个BUG?以后的版本会支持吗?
目前就是这样设计的 可以关注一下ob的版本记录 后续是否调整也可以看发版说明
再问一个问题,我还有别的表里面有字段类型是varchar的,虚拟类型是PERSISTENT,表达式是substr函数通过其他字段获得的,这样的数据导入时也报错,有解决方案吗?下面是这个表结构,字段是birth_str_cal
CREATE TABLE system_user_personal_info
(
id
bigint(20) NOT NULL AUTO_INCREMENT,
puid
varchar(256) NOT NULL,
name
varchar(50) DEFAULT NULL,
id_card
varchar(50) DEFAULT NULL COMMENT ‘身份证号’,
citizen_check_status
tinyint(4) NOT NULL COMMENT ‘0=未验证 1=已验证’,
citizen_check_id
bigint(20) NOT NULL DEFAULT 0,
email
varchar(200) DEFAULT NULL,
mobile
varchar(200) DEFAULT NULL COMMENT ‘手机号’,
address
varchar(4000) DEFAULT NULL,
avatar
varchar(4000) DEFAULT NULL COMMENT ‘头像’,
gender
tinyint(4) NOT NULL DEFAULT 0,
birth_date
date DEFAULT NULL,
show_name
varchar(255) DEFAULT NULL COMMENT ‘别名’,
create_date
datetime(6) NOT NULL,
update_date
datetime(6) NOT NULL,
create_by
bigint(20) NOT NULL,
update_by
bigint(20) NOT NULL,
birth_str_cal
varchar(4) GENERATED ALWAYS AS (substr(id_card
,11,4)) STORED,
PRIMARY KEY (id
),
UNIQUE KEY puid
(puid
),
KEY id_card
(id_card
),
KEY birth_str_cal
(birth_str_cal
),
KEY name
(name
)
) ENGINE=InnoDB AUTO_INCREMENT=1195 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT=‘登录用户个人信息’;
发一下 详细的报错信息
这一波操作也行?