问题出现在ssm框架中,往mysql数据库中插入数据的情况。当时先执行的是下面的SQL生成表,然后往表里插入数据。

DROP TABLE IF EXISTS `consumption_index_year`;
CREATE TABLE `consumption_index_year` (
    `code` VARCHAR(20)  NOT NULL  COMMENT '代码',
    `lastValue` DOUBLE NOT NULL COMMENT '去年度值汇总(前年值)',
    `year` VARCHAR(25)  NOT NULL COMMENT '年份',
    `indexName`  VARCHAR(25) NOT NULL    COMMENT '指标名称',
    `indexUnit` VARCHAR(25) NOT NULL COMMENT '指标单位',
    `companyreportid`  VARCHAR(50) NOT NULL  COMMENT '报告id',
    `orgId`  VARCHAR(50) NOT NULL COMMENT '组织机构ID',
    `companyperiodreportstatusid` VARCHAR(50),
    `energyConsumptionIndexId` VARCHAR(50),
    `id` VARCHAR(20),
    `fullname` VARCHAR(50)NOT NULL COMMENT '公司名称',
    `region` VARCHAR(30) NOT NULL COMMENT '区域名称',
    `currentValue` DOUBLE NOT NULL COMMENT '本年度值汇总(去年值)',
    `indexCurrent` DOUBLE NOT NULL COMMENT '指标1(本年度,去年)',
    `indexLast` DOUBLE NOT NULL COMMENT '指标4(去年,前年)',
    `status` VARCHAR(30) NOT NULL COMMENT '上报状态',
    `importantLevel`  VARCHAR(15) NOT NULL COMMENT '重点类型',
    `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP	COMMENT '创建时间',
    `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE  CURRENT_TIMESTAMP COMMENT '更新时间'
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

然后报错报的字段是importantLevel。经过检查发现importantLevel的字段的值在一些情况下可能比15长,然后把importantLevel VARCHAR(15)长度改大一点,改成importantLevel VARCHAR(50)。然后再存取数据就正常了。

友情提示:字段的长度可以设置的稍微大点,我已经遇到过两次因为字段长度的问题导致存数据失败的情况了。

分类: 常见报错