断点先全部关了
现象:roleNames直接会截取到默认的 group_concat的长度限制设置(1024字节)
select group_concat(role.rolename) as roleNames, group_concat(role.roleId) as roleIds
from PUB_USER_ROLE_LINK p,
PUB_ROLE_INFO role
查看数据库中group_concat_max_len的大小。
show variables like ‘group_concat_max_len’;
解决:
1.更改group_concat_max_len的值
你可以通过更改group_concat_max_len的值来增加group_concat的长度限制。你可以在MySQL配置文件中设置这个值,或者在会话级别或者全局级别动态地更改它。例如:
SET SESSION group_concat_max_len = 102400;
2.先查出来在java拼接、
MySQL的time只能保存00:00-59:59:59
如果在需求中需要24点这种东西 那就必须需要日期 只有时间不行
忽略插入
在做数据库数据迁移 大量插入数据的时候
insert ignore into的原理是根据“唯一索引"(或者主键):如果存在,原先对应的主键或者唯一键,不管其他字段的值有无变化,之前对应的这条数据都不会变化。
优点是:可以保证数据的幂等 也就重复主键的数据不会插入 也不会报错
缺点是:在某些字段 我们没有set,但是数据库字段not null 非空,他也会帮我们set一个字段类型的默认值,比如bigint:0
特别需要注意: 比如下面sql
a_table原来是空表 有一个id字段是主键
INSERT IGNORE INTO a_table (logId,teamId,createTime,modifyTime,isDel,company)
+ ‘VALUES ?’, [a,b,c,d,e,f]);
INSERT IGNORE INTO a_table (logId,teamId,createTime,modifyTime,isDel,company)
+ ‘VALUES ?’, [a1,b1,c,d,e,f]);
INSERT IGNORE INTO a_table (logId,teamId,createTime,modifyTime,isDel,company)
+ ‘VALUES ?’, [a2,b2,c,d,e,f]);
INSERT IGNORE INTO a_table (logId,teamId,createTime,modifyTime,isDel,company)
+ ‘VALUES ?’, [a3,b3,c,d,e,f]);
a_table 实际上有一个id字段是主键 。没有其他唯一索引,在这里并没有set Id=XX
但是当我们执行这个4条sql的时候 会插入一条id为0的记录,因为第一条默认赋给了id为0,然后第2,3,4条也是赋给了id为0,但是id重复,所以没插入进来,也没报错!