首页 > 数据库 >Mysql function 自定义函数,查找子节点

Mysql function 自定义函数,查找子节点

时间:2022-10-02 17:00:44浏览次数:86  
标签:function ci set sTempChd 自定义 utf8mb4 sTemp 0900 Mysql

This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

MySQL 创建函数报错 This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators

 

CREATE FUNCTION demo.queryChildren(nodeId VARCHAR(50))
RETURNS VARCHAR(4000)
BEGIN
    DECLARE sTemp VARCHAR(4000);
    DECLARE sTempChd VARCHAR(4000);
    SET sTemp='';
    SET sTempChd = nodeId;
    WHILE sTempChd IS NOT NULL DO
        SET sTemp= CONCAT(sTemp,',',sTempChd);
        SELECT GROUP_CONCAT(glid) INTO sTempChd FROM model_type WHERE FIND_IN_SET(pGlid,sTempChd)>0;
    END WHILE;
    RETURN sTemp;
END

SELECT demo.queryChildren('a02aee69-1183-44cb-a354-4e51caa50de8');

执行查询出现错误:  Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operation 'find_in_set'

 

查询字符集

SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
查询结果
character_set_client    utf8mb4
character_set_connection    utf8mb4
character_set_database    utf8mb4
character_set_filesystem    binary
character_set_results    
character_set_server    utf8mb4
character_set_system    utf8
collation_connection    utf8mb4_0900_ai_ci
collation_database    utf8mb4_0900_ai_ci
collation_server    utf8mb4_0900_ai_ci

 mysql设置了utf8mb4,为什么还有utf8mb4_general_ci和utf8mb4_0900_ai_ci? - SeasonHu - 博客园 (cnblogs.com)

在Find_in_set 函数指定参数的collate,这样就可以了。

CREATE DEFINER=`root`@`localhost` FUNCTION `demo`.`queryChildren`(nodeId VARCHAR(50)) RETURNS varchar(4000) CHARSET utf8mb4
BEGIN

    DECLARE sTemp VARCHAR(4000)  CHARSET utf8mb4 collate utf8mb4_0900_ai_ci;
    DECLARE sTempChd VARCHAR(4000)  CHARSET utf8mb4 collate utf8mb4_0900_ai_ci;
    SET sTemp='';
    SET sTempChd = nodeId;
    WHILE sTempChd IS NOT NULL DO
        SET sTemp= CONCAT(sTemp,",",sTempChd);
        SELECT GROUP_CONCAT(glid) INTO sTempChd FROM model_type WHERE FIND_IN_SET(pGlid collate utf8mb4_0900_ai_ci,sTempChd collate utf8mb4_0900_ai_ci)>0;
                
    END WHILE;
 
    RETURN substr(sTemp,2);

END

 

标签:function,ci,set,sTempChd,自定义,utf8mb4,sTemp,0900,Mysql
From: https://www.cnblogs.com/zitjubiz/p/16744470.html

相关文章

  • Spring整合Mybatis连接MySQL数据库配置 异常 情景再现
    Spring整合Mybatis连接MySQL数据库配置情景再现注意点一:数据库Table表字段和Entity实体类属性名不匹配解决:方法一:开启下划线转大驼峰命名mybatis:configurati......
  • 关于Android SDK自定义目录始终无法下载谷歌包
      最近重装了一下系统,然后在配置安卓SDK自定义路径的时候突然遇到了一个小问题,就是在配置好tools之后通过调用sdkmanager--list的时候突然显示warning,并且无法显示所有......
  • 安装Glibc版本MySQL数据库
    系统环境CentOS7,软件版本MySQL5.7.31第一步:创建一个数据库专用账号mysql(其所属组也为mysql)#useradd-r-s/sbin/nologinmysql#idmysql第二步:清空系统中的原有mariadb的......
  • 如何让intellij idea支持istio自定义资源
    intellijidea是目前最好的IDE工具,它的kubernetes插件原生支持kubernetesapi,但CDR自定义资源不是原生支持,我们在kubernetes应用过程中会遇到很多自定资源的,比如istio,......
  • Nodejs Express Mysql 增删改查
    constmysql=require('mysql2')//注意是mysql2,不是mysql。mysql2支持mysql8.0以上的加密方式constdb=mysql.createPool({host:'127.0.0.1',user:'ro......
  • 自定义映射resultMap
    resultMap处理字段和属性的映射关系如果字段名与实体类中的属性名不一致,该如何处理映射关系?第一种方法:为查询的字段设置别名,和属性名保持一致下面是实体类中的属性名:......
  • MySQL中EVENT的用法
    一、Event创建语法CREATEEvent[IFNOTEXISTS]event_name--创建使用createeventONSCHEDULEschedule--onschedule什么时候来执行,执行频率[ONCOMPLETION[N......
  • Java lamda表达式 Predicate<T>、BiFunction<T,T,R>、FunctionalInterface 应用实例说
    使用相对应的函数式接口,可使编写程序在某些时候变得更高雅和灵活,下面对各种情况进行说明ps:核心原理就是将方法作为一个参数传到另一个方法,使该方法处理内容更丰富和灵......
  • 自定义start
    1.新建项目atguigu-hello-spring-boot-starter,在pox.xml中导入自动配置atguigu-hello-spring-boot-starter-autoconfigure项目<dependencies><dependency>......
  • 使用 docker-compose 安装 es、kibana、mysql、redis、kafka
    由于经常的安装虚拟机,每次都要重装环境比较麻烦。这次写了一个docker-compose文件,一次性搞定安装问题。#Useroot/exampleasuser/passwordcredentialsversion:"3......