数据库问题

  1. 数据库
    1. MySQL Oracle 时间类型查询区别
    2. MySQL GROUP_BY问题
    3. 修复数据库的最大错误连接数
    4. Oracle in 1000条问题

数据库

MySQL Oracle 时间类型查询区别

数据库查询

对应的 mybatisPlus 直接使用 likeRight Oracle日期类型字段会无效查询

MySQL GROUP_BY问题

报错:this is incompatible with sql_mode=only_full_group_by

原因
mysql5.7以上版本会出现此问题
mysql 5.7版本以上默认的sql配置是:sql_mode=”ONLY_FULL_GROUP_BY”,这个配置严格执行了”SQL92标准”

ONLY_FULL_GROUP_BY
对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中。简而言之,就是SELECT后面接的列必须被GROUP BY后面接的列所包含

select a,b from table group by a,b,c; (正确)
select a,b,c from table group by a,b; (错误)

查看 sql_mode

select @@GLOBAL.sql_mode;

临时解决
重启mysql数据库服务之后,ONLY_FULL_GROUP_BY还会出现

set @@GLOBAL.sql_mode=""
set@@GLOBAL.sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

永久解决

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

重启

service mysqld stop
service mysqld start

查看状态

service mysqld status

修复数据库的最大错误连接数

image-20240424174450816

解决方法一:
show variables like '%max_connect_errors%';

更改数据库的最大错误连接数
set global max_connect_errors = 1000;

show variables like '%max_connect_errors%';

解决方法二:
清理一下hosts文件
flush hosts;

解决方法三:
重启mysqld

Oracle in 1000条问题

解决:
<select id="selectUserIds" parameterType="java.util.List" resultType="String">
    select USER_ID from WFJT_USER_INFO where USER_ID in
        <foreach collection="list" item="item" index="index" open="(" close=")">
            <if test="index !=0">
                <choose>
                    <when test="index % 1000 == 999">) OR USER_ID IN (</when>
                    <otherwise>,</otherwise>
                </choose>
            </if>
            #{item}
        </foreach>
</select>

日夜颠倒头发少 ,单纯好骗恋爱脑 ,会背九九乘法表 ,下雨只会往家跑 ,搭讪只会说你好 ---- 2050781802@qq.com

×

喜欢就点赞,疼爱就打赏

相册 说点什么