在这种情况下,Instance Manager的行为取决于MySQL配置文件中的选项。如果没有配置文件,MySQL实例管理器创建mysqld实例并试图用默认(编译嵌入的)配置来启动。这说明如果mysqld没有安装到 默认位置,IM不能猜出它的位置。如果你已经在非标准位置安装了MySQL服务器,你应使用配置文件。参见2.1.5节,“安装布局”。
如果有配置文件,IM将分析配置文件搜索[mysqld]部分(例如[mysqld]、[mysqld1]、[mysqld2]等)。每个部分指定一个实例。启动时IM将启动所有找到的实例。IM关闭时默认停止所有实例。
请注意有一个特殊选项mysqld-path(mysqld-path = path-to-mysqld- binary),只能用IM识别。使用该变量让IM知道mysqld二进制驻留在哪儿。你还应该为服务器设置basedir和datadir选项。
启用MySQL实例管理器的典型MySQL服务器启动/关闭循环为:
· 用/etc/init.d/mysql脚本启动MySQL实例管理器。
· MySQL实例管理器启动所有实例并监视它们。
· 如果某个服务器实例失败,MySQL实例管理器重启它。
· 如果MySQL实例管理器被关闭(例如用/etc/init.d/mysql stop命令),所有实例被MySQL实例管理器关闭。
表结构
这种情况可以通过左连接实现
可以看到左连接是以左表为基准,通过关联关系id = pid去找到对应的上级组织记录,所以空的id找不到对应的记录,返回空
有时候我们需要获取某个组织的完整路径 如
部门C/部门C_2/部门C_2_1/部门C_2_1_1
编写存储过程,生成一个临时表tmpLst,按照层级把每一条记录插入到临时表,然后每次从临时表查当前层级的组织,循环去查组织表的上级组织,直到结果ROW_COUNT = 0为止,代表当前层级下的所有组织已经是最后一级
查询到的结果,大家可以自行优化一下显示方式和查询的字段
当然还有另一种方式,从设计上解决
如新加一个唯一约束,把组织的约束定义为 ORG_001_ORG_001_002_ORG_001_003 这样的形式
当需要查询ORG_001所有的下级时,只需要查询约束 like ORG_001% 即可
当需要查询ORG_001_002所有上级时,只需要查询约束 like %ORG_001_002
不过问题在于如果组织的存在架构调整,如,ORG_001_002调整到了 ORG_002下,因为树型结构变化了,直接用like无法查询到正确数据,这个时候要考虑是否允许调整或者调整后修改对应的唯一约束
先声明一个游标,语法:DECLARE v_1 VARCHAR(16)
DECLARE v_2 VARCHAR(16)
DECLARE c_XXX CURSOR FOR
SELECT c_1, c_2
FROM t_1
同时声明一个布尔型的变量FOUND,当循环的条件不成立时,结束循环用的。
DECLARE FOUND BOOLEAN DEFAULT TRUE
DECLARE CONTINUE HANDLER FOR NOT FOUND SET FOUND = FALSE
在使用游标的时候,要先打开游标,语法:OPEN c_XXX
使用的时候,要先打开游标,取出第一条数据,语法: FETCH c_XXX INTO v_1, v_2
然后才开始执行循环,语法:WHILE FOUND DO
执行需要执行的语句;
取下一条数据放到当前游标中,FETCH c_XXX INTO v_1, v_2
结束循环,语法:END WHILE
结束游标,语法:CLOSE c_cargo。有什么问题我们再沟通啊。不知道你具体要问题的是什么。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)