【 使用环境 】生产环境
【 OB or 其他组件 】 OB
【 使用版本 】4.3.5.2
【问题描述】计划新建2张表,service_name 字段一样长,但是建表仍然报错: ERROR 1215 (HY000): Child column ‘service_name’ data length cannot be less than parent column ‘service_name’ data length
【复现路径】
可能的2个原因都不是,关联字段类型一样长度相同,且父表是主键。
我附件上传的图片中2个建表语句很明显可看出来
ob是社区版的么?你把建表语句提供一下 保存在文本里
CREATE TABLE `servicecomponentdesiredstate` (
`id` bigint(20) NOT NULL,
`component_name` varchar(100) NOT NULL,
`cluster_id` bigint(20) NOT NULL,
`desired_repo_version_id` bigint(20) NOT NULL,
`desired_state` varchar(255) NOT NULL,
`service_name` varchar(255) NOT NULL,
`recovery_enabled` smallint(6) NOT NULL DEFAULT 0,
`repo_state` varchar(255) NOT NULL DEFAULT 'NOT_REQUIRED',
PRIMARY KEY (`id`),
UNIQUE KEY `UQ_scdesiredstate_name` (`component_name`,`service_name`,`cluster_id`),
KEY `FK_scds_desired_repo_id` (`desired_repo_version_id`),
KEY `srvccmponentdesiredstatesrvcnm` (`service_name`,`cluster_id`),
CONSTRAINT `FK_scds_desired_repo_id` FOREIGN KEY (`desired_repo_version_id`) REFERENCES `repo_version` (`repo_version_id`),
CONSTRAINT `srvccmponentdesiredstatesrvcnm` FOREIGN KEY (`service_name`, `cluster_id`) REFERENCES `clusterservices` (`service_name`, `cluster_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci;
CREATE TABLE `clusterservices` (
`service_name` varchar(255) NOT NULL,
`cluster_id` bigint(20) NOT NULL,
`service_enabled` int(11) NOT NULL,
PRIMARY KEY (`service_name`,`cluster_id`),
KEY `FK_clusterservices_cluster_id` (`cluster_id`)
CONSTRAINT `FK_clusterservices_cluster_id` FOREIGN KEY (`cluster_id`) REFERENCES `clusters` (`cluster_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci;
先创建clusterservices表(SET FOREIGN_KEY_CHECKS = 0;
),然后创建servicecomponentdesiredstate 表时会报错
是社区版的