ALonelyLemon 2021-03-26 16:00 采纳率: 100%
浏览 215
已采纳

Mycat的逻辑库名是否必须与实际库名一致?

今天在学习mycat时出现了一个问题,当我的逻辑库名与实际库名不一致时,可以使用SQLyog连接库但打不开表。

然后我在mycat服务器端进行了测试,发现当我使用“逻辑库名.表”的形式进行操作时就会出错,然后找到一篇博客

https://blog.csdn.net/wangxuelei036/article/details/107655724

于是我将连接库名与实际库名改为互相一致,一切变得看似正常,但我觉得我没有实际的解决问题,逻辑库名不应当是无用的,当逻辑库中存在多个节点时,可能这个方法就不能解决问题了。

所以想请教一下大佬,我是否存在关键的配置项没有配置?

这是我的配置文件

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
	<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">     
	</schema>
	<dataNode name="dn1" dataHost="host1" database="test" />     
	<dataHost name="host1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100"> 
		<heartbeat>select user()</heartbeat>
		<!-- can have multi write hosts -->
		<writeHost host="hostM1" url="192.168.8.135:3306" user="root"  password="1"/>
				<!-- can have multi read hosts -->
				<readHost host="hostS2" url="192.168.8.139:3306" user="repuser" password="1" />
		</writeHost>
	</dataHost>
</mycat:schema>
  • 写回答

3条回答 默认 最新

  • ALonelyLemon 2021-03-31 14:29
    关注

    兜兜转转几天,最后还是自己去翻别的博客找到解决方法,写一下希望对别人有帮助 。

    schema 的配置项目checkSQLschema改为true,mycat在将命令发送到数据库时会去掉表示schema的字符,防止doesn't exist发生,这样就可以使用逻辑库名访问,但因为对配置文件了解不够深入尚不清楚是不是会引起其他的问题。

    <?xml version="1.0"?>
    <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
    <mycat:schema xmlns:mycat="http://io.mycat/">
    	<schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1">     
    <!--这里checkSQLschema由false改为了true,然后可以使用逻辑库名连接-->
    	</schema>
    	<dataNode name="dn1" dataHost="host1" database="test" />     
    	<dataHost name="host1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100"> 
    		<heartbeat>select user()</heartbeat>
    		<!-- can have multi write hosts -->
    		<writeHost host="hostM1" url="192.168.8.135:3306" user="root"  password="1"/>
    				<!-- can have multi read hosts -->
    				<readHost host="hostS2" url="192.168.8.139:3306" user="repuser" password="1" />
    		</writeHost>
    	</dataHost>
    </mycat:schema>

    方案来自文章:https://www.jianshu.com/p/7a61ee730cce

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效