Mycat 无法启动
有大神看看问题么。实在是找不到问题。说是:元素类型为 "schema" 的内容必须匹配。可招来找去也没找到问题。就是无法启动
STATUS | wrapper | 2019/02/27 13:37:57 | --> Wrapper Started as Daemon
STATUS | wrapper | 2019/02/27 13:37:57 | Launching a JVM...
INFO | jvm 1 | 2019/02/27 13:37:57 | OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=64M; support was removed in 8.0
INFO | jvm 1 | 2019/02/27 13:37:58 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
INFO | jvm 1 | 2019/02/27 13:37:58 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved.
INFO | jvm 1 | 2019/02/27 13:37:58 |
INFO | jvm 1 | 2019/02/27 13:37:59 |
INFO | jvm 1 | 2019/02/27 13:37:59 | WrapperSimpleApp: Encountered an error running main: java.lang.ExceptionInInitializerError
INFO | jvm 1 | 2019/02/27 13:37:59 | java.lang.ExceptionInInitializerError
INFO | jvm 1 | 2019/02/27 13:37:59 | at io.mycat.MycatStartup.main(MycatStartup.java:53)
INFO | jvm 1 | 2019/02/27 13:37:59 | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
INFO | jvm 1 | 2019/02/27 13:37:59 | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
INFO | jvm 1 | 2019/02/27 13:37:59 | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
INFO | jvm 1 | 2019/02/27 13:37:59 | at java.lang.reflect.Method.invoke(Method.java:498)
INFO | jvm 1 | 2019/02/27 13:37:59 | at org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:240)
INFO | jvm 1 | 2019/02/27 13:37:59 | at java.lang.Thread.run(Thread.java:748)
INFO | jvm 1 | 2019/02/27 13:37:59 | Caused by: io.mycat.config.util.ConfigException: org.xml.sax.SAXParseException; lineNumber: 11; columnNumber: 14; 元素类型为 "schema" 的内容必须匹配 "(table)*"。
INFO | jvm 1 | 2019/02/27 13:37:59 | at io.mycat.config.loader.xml.XMLSchemaLoader.load(XMLSchemaLoader.java:121)
INFO | jvm 1 | 2019/02/27 13:37:59 | at io.mycat.config.loader.xml.XMLSchemaLoader.<init>(XMLSchemaLoader.java:78)
INFO | jvm 1 | 2019/02/27 13:37:59 | at io.mycat.config.loader.xml.XMLSchemaLoader.<init>(XMLSchemaLoader.java:82)
INFO | jvm 1 | 2019/02/27 13:37:59 | at io.mycat.config.ConfigInitializer.<init>(ConfigInitializer.java:76)
INFO | jvm 1 | 2019/02/27 13:37:59 | at io.mycat.config.MycatConfig.<init>(MycatConfig.java:72)
INFO | jvm 1 | 2019/02/27 13:37:59 | at io.mycat.MycatServer.<init>(MycatServer.java:158)
INFO | jvm 1 | 2019/02/27 13:37:59 | at io.mycat.MycatServer.<clinit>(MycatServer.java:101)
INFO | jvm 1 | 2019/02/27 13:37:59 | ... 7 more
INFO | jvm 1 | 2019/02/27 13:37:59 | Caused by: org.xml.sax.SAXParseException; lineNumber: 11; columnNumber: 14; 元素类型为 "schema" 的内容必须匹配 "(table)*"。
INFO | jvm 1 | 2019/02/27 13:37:59 | at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
INFO | jvm 1 | 2019/02/27 13:37:59 | at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134)
INFO | jvm 1 | 2019/02/27 13:37:59 | at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:396)
INFO | jvm 1 | 2019/02/27 13:37:59 | at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)
INFO | jvm 1 | 2019/02/27 13:37:59 | at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:284)
INFO | jvm 1 | 2019/02/27 13:37:59 | at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDValidator.java:1994)
INFO | jvm 1 | 2019/02/27 13:37:59 | at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator.java:879)
INFO | jvm 1 | 2019/02/27 13:37:59 | at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782)
INFO | jvm 1 | 2019/02/27 13:37:59 | at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2967)
INFO | jvm 1 | 2019/02/27 13:37:59 | at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
INFO | jvm 1 | 2019/02/27 13:37:59 | at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
INFO | jvm 1 | 2019/02/27 13:37:59 | at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:842)
INFO | jvm 1 | 2019/02/27 13:37:59 | at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:771)
INFO | jvm 1 | 2019/02/27 13:37:59 | at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
INFO | jvm 1 | 2019/02/27 13:37:59 | at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:243)
INFO | jvm 1 | 2019/02/27 13:37:59 | at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)
INFO | jvm 1 | 2019/02/27 13:37:59 | at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:121)
INFO | jvm 1 | 2019/02/27 13:37:59 | at io.mycat.config.util.ConfigUtil.getDocument(ConfigUtil.java:115)
INFO | jvm 1 | 2019/02/27 13:37:59 | at io.mycat.config.loader.xml.XMLSchemaLoader.load(XMLSchemaLoader.java:111)
INFO | jvm 1 | 2019/02/27 13:37:59 | ... 13 more
STATUS | wrapper | 2019/02/27 13:38:01 | <-- Wrapper Stopped
MyCat的配置 Server.xml
may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0
- - Unless required by applicable law or agreed to in writing, software -
distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the
License for the specific language governing permissions and - limitations
under the License. -->
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
<system>
<property name="useSqlStat">0</property>
<property name="useGlobleTableCheck">0</property>
<property name="sequnceHandlerType">2</property>
<property name="processorBufferPoolType">0</property>
<property name="handleDistributedTransactions">0</property>
<property name="useOffHeapForMerge">1</property>
<property name="memoryPageSize">1m</property>
<property name="spillsFileBufferSize">1k</property>
<property name="useStreamOutput">0</property>
<property name="systemReserveMemorySize">384m</property>
<property name="useZKSwitch">true</property>
</system>
<user name="sa"> <!-- 这里的账号和密码与你的数据库的一致即可 -->
<property name="password">123456</property>
<property name="schemas">TESTDB</property> <!-- 这里的TESTDB的名字可以随意写,只需与schema.xml中的一致即可 -->
</user>
</mycat:server>
schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!-- 这里的name属性的值TESTDB与上面server.xml中的一致即可,
sqlMaxLimit属性代表每次只查询前n条符合条件的记录,避免全表扫描 -->
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
<!-- 下面名叫“t_a1”的表是在我的库中真实存在的一个表,
同时,下面的dataNode属性的值对应的是下面dataNode标签的name属性的值 -->
<table name="test3" primaryKey="id" type="global" dataNode="dn1" />
</schema>
<!-- dataNode标签的主要作用是指明对哪一个数据库进行操作和管理,
其中的dataHost属性对应的下面dataHost标签的name属性的值 -->
<dataNode name="dn1" dataHost="localhost1" database="mycat" />
<!-- 下面的localhost1的名字是随便取的,balance=1表示读写分离、
writeType=0表示写操作集中到第一个写数据库
switchType=1代表自动切换 -->
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<!-- 检测心跳的方法,可以用下面的语句,也可以用其他的 -->
<heartbeat>select user()</heartbeat>
<!-- 下面是读和写的mysql的ip和端口,以及登录的账号和密码。 -->
<writeHost host="hostM1" url="localhost:3306" user="sa" password="123456">
<readHost host="hostS2" url="192.168.109.102:3306" user="sa" password="123456" />
</writeHost>
</dataHost>
</mycat:schema>