当我使用 long 作为主键创建表时,会发生此错误。我已经检查了MySQL错误:没有密钥长度的密钥规范,但我认为它不能解决我的问题,因为我没有使用文本或blob作为索引。
我不知道为什么long weng_id
作为主键,但它显示了BLOB/TEXT column weng_id
.SQL:
CREATE TABLE `ContentRepository`.`无标题` (
`weng_id` long NOT NULL,
`content_type` tinyint(0) NOT NULL DEFAULT 0,
`store_time` datetime(0) NOT NULL ON UPDATE CURRENT_TIMESTAMP(0),
`create_time` datetime(0) NOT NULL,
`modify_time` datetime(0) NOT NULL,
`weng_url` varchar(1000) NOT NULL,
`algorithm_tags` varchar(1000) NULL,
`words` varchar(1000) NULL,
`operate_tags` varchar(1000) NULL,
`mdd_id` bigint(0) NULL,
`related_mdd_ids` varchar(1000) NULL,
`related_pois` varchar(1000) NULL,
`uid` bigint(0) NOT NULL,
`user_level` tinyint(0) NOT NULL,
`user_contribution_score` double NULL,
`status` tinyint(0) NOT NULL,
`check_status` tinyint(0) NULL,
`checked_time` datetime(0) NULL,
`static_score` double NULL,
`static_level` int(0) NULL,
`dynamic_level` int(0) NULL,
`dynamic_score` double NULL,
`show_channel` int(0) NULL,
`show_num` bigint(0) NULL,
`click_num` bigint(0) NULL,
`favorite_num` bigint(0) NOT NULL,
`comment_num` bigint(0) NOT NULL,
`share_num` bigint(0) NOT NULL,
`collect_num` bigint(0) NOT NULL,
`weng_type` tinyint(0) NOT NULL,
`pricture_urls` varchar(1000) NOT NULL,
`video_url` varchar(1000) NULL,
`content` varchar(8000) NULL,
`weng_level` tinyint(0) NOT NULL,
`weng_category` tinyint(0) NOT NULL,
`picture_num` int(0) NOT NULL,
PRIMARY KEY (`weng_id`),
INDEX `idx_create`(`create_time`) USING BTREE,
INDEX `idx_modify`(`modify_time`) USING BTREE,
INDEX `idx_store`(`store_time`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
long
可能不是你认为的类型。 您可能想要bigint
:
CREATE TABLE `ContentRepository`.`无标题` (
`weng_id` bigint NOT NULL,
`content_type` tinyint(0) NOT NULL DEFAULT 0,
. . .
)
long
是一个大字符串(mediumtext
)。 它通常不适合索引。