在上一篇的文章中实现了mycat的分库分表,https://blog.csdn.net/java_chegnxuyuan/article/details/89891519
但是按照上一篇文章操作时,会发现虽然我们对逻辑数据库的的主键设置自增长,但是进行insert操作时,如果不管id时insert会出错。这就是这篇文章要解决的问题。
在上一篇中我们设置了
<system>
<property name="defaultSqlParser">druidparser</property>
<property name="mutiNodeLimitType">1</property>
<property name="serverPort">8066</property>
<property name="managerPort">9066</property>
<property name="sequnceHandlerType">0</property>
</system>
这个<property name="sequnceHandlerType">0</property>表示我们使用本地文件的方式处理主键自增长
修改配置文件sequence_conf.properties
GLOBAL.HISIDS=
表示使用过的历史分段(一般无特殊需要可不配置)
GLOBAL.MINID=10001
表示最小ID值
GLOBAL.MAXID=20000
表示最大ID值
GLOBAL.CURID=10000
表示当前ID值
保存重启
insert into item(id,name,age,score) values(next value for MYCATSEQ_GLOBAL,'test',20,100);
即可insert成功,但是这和我们平常写的sql不一样。
第二种方式:
我们在第一篇文章中配置了table的名称为item
在sequence_conf.properties 中添加
ITEM.HISIDS=
表示使用过的历史分段(一般无特殊需要可不配置)
ITEM.MINID=10001
表示最小ID值
ITEM.MAXID=20000
表示最大ID值
ITEM.CURID=10000
表示当前ID值
需要特别注意的是这里配置时,必须用table名称的大写
保存重启
insert into item(name,age,score) values('test',20,100);