创建序列前 Mycat 的 sequences/
目录情况:
创建一个 MySQL 生成方式的序列。
sql
/*+ mycat:setSequence{"name":"sharding_db_not_tb111","clazz":"io.mycat.plug.sequence.SequenceMySQLGenerator"} */;
因为没有官方文档支持,起初尝试使用 dropSequence
,deleteSequence
,unsetSequence
注释,发现都不行。后查看 Mycat 2 源码发现确实没有设计删除序列的功能。
,
执行如下 Mycat 注释创建一个序列。
sql
/*+ mycat:setSequence{"name":"sharding_db_not_tb111","clazz":"io.mycat.plug.sequence.SequenceMySQLGenerator"} */;
查看操作系统 Mycat 配置目录中的 sequences/
子目录下生成了相应的配置文件。
上面说过无法通过 Mycat 语法删除这个序列,因而直接通过操作系统物理删除。可见,该配置文件已经删除了。
再次使用 Mycat 注释创建该序列。显示执行成功。
但查看存储时,却没有再次生成该配置文件。
这就很奇怪!!!
我分析怀疑是 Mycat 有缓存导致的,GC 没及时清理,导致误判该序列及配置文件已存在。
下面验证一下:
-
重启 Mycat 。
-
再次创建该序列。
-
查看存储,发现再次创建了该序列的配置文件。
至此,证实了我的猜测。