mycatapache / mycat-download-old Goto Github PK
View Code? Open in Web Editor NEWLicense: Apache License 2.0
License: Apache License 2.0
如标题
MYCAT-web启动后,进去是空白页面,有人遇到过吗?zk已经启动和配置,但是监听端口的时候,发现没有连接上2181端口,但是两个应用启动都是正常的,也没有防火墙,有详细的配置说明吗?
https://github.com/MyCATApache/Mycat-download/tree/master/1.4-RELEASE
这下面的包能用的?下载完成后,解压就报错。请好好反省省吧
能不能使用ODBC连接Mycat,如果可以的话,使用那个ODBC?
childTable 设置autoIncrement,全局seq并没有起作用。1.3下是可以的。
版本Mycat-server-1.4-RC-20150617220132-win.tar
当使用rang-long-id 时,
配置autopartition-long.txt为
0-3=0
3-22=1
3分片在第1个分片上
配置autopartition-long.txt为
3-22=1
0-3=0
3分片在第2个分片上
MySQLDetector.java中
`@Override
public void onResult(SQLQueryResult<Map<String, String>> result) {
if (result.isSuccess()) {
int balance = heartbeat.getSource().getDbPool().getBalance();
PhysicalDatasource source = heartbeat.getSource();
Map<String, String> resultResult = result.getResult();
if (source.getHostConfig().isShowSlaveSql()
&&(source.getHostConfig().getSwitchType() == DataHostConfig.SYN_STATUS_SWITCH_DS ||
PhysicalDBPool.BALANCE_NONE!=balance )
)
{
String Slave_IO_Running =resultResult!=null? resultResult.get(
"Slave_IO_Running"):null;
String Slave_SQL_Running = resultResult!=null?resultResult.get(
"Slave_SQL_Running"):null;
if (Slave_IO_Running != null
&& Slave_IO_Running.equals(Slave_SQL_Running)
&& Slave_SQL_Running.equals("Yes")) {
heartbeat.setDbSynStatus(DBHeartbeat.DB_SYN_NORMAL);
String Seconds_Behind_Master = resultResult.get(
"Seconds_Behind_Master");
if (null != Seconds_Behind_Master
&& !"".equals(Seconds_Behind_Master)) {
heartbeat.setSlaveBehindMaster(Integer
.valueOf(Seconds_Behind_Master));
}
} else if(source.isSalveOrRead())
{
MySQLHeartbeat.LOGGER
.warn("found MySQL master/slave Replication err !!! "
+ heartbeat.getSource().getConfig());
heartbeat.setDbSynStatus(DBHeartbeat.DB_SYN_ERROR);
}
}
heartbeat.setResult(MySQLHeartbeat.OK_STATUS, this, null);
} else {
heartbeat.setResult(MySQLHeartbeat.ERROR_STATUS, this, null);
}
lasstReveivedQryTime = System.currentTimeMillis();
}`
如果主节点挂掉,备节点还未切换成功,就会走到heartbeat.setDbSynStatus(DBHeartbeat.DB_SYN_ERROR);,之后备节点切换成功后,因为Slave_IO_Running一直是“Connecting”,状态无法变回Normal,所以备节点在负载均衡的判断canAsReadNode一直通不过,所以切换后备节点后,如果备节点有读节点,负载均衡不起作用的。
最好再加个
else if (Slave_IO_Running != null && Slave_IO_Running.equals("Connecting")) { MySQLHeartbeat.LOGGER .warn("found MySQL master changed !!! " + heartbeat.getSource().getConfig()); heartbeat.setDbSynStatus(DBHeartbeat.DB_SYN_NORMAL); }
多个表一起join ,然后group by 汇总,可以查出结果,但如果 追加order by排序 ,则会结果为empty。
两个解析器一样情况,原来v1.2支持。
使用中发现,DataNode的配置仅有:name、dataHost、database三个属性,没有表一级的配置选项,能够提供到trueTable(真实表)选项。
两个表 customer和customer_addr,用sql语句做关联查询
SELECT customer.,customer_addr. FROM customer,customer_addr WHERE customer.id=customer_addr.customer_id
ORDER BY customer.id,customer_addr.id
查询结果有时未按customer_addr.id排序。
SELECT id, num FROM user
[SQL]SELECT id, num FROM user
受影响的行: 0
时间: 0.008s
[Err] 1064 - com.alibaba.druid.sql.parser.ParserException: syntax error, expect RPAREN, actual ERROR DURATION
分片成功,select能查到数据,但是一直报这个error
rule,0:2
t截取了'符号
INSERT INTO topicext(eid,name,tid) values('0','aa','04aaa') err:java.lang.NumberFormatException: For input string: "'0"
java.lang.NumberFormatException: For input string: "'0"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:481)
at org.opencloudb.route.function.PartitionDirectBySubString.calculate(PartitionDirectBySubString.java:48)
at org.opencloudb.route.util.RouterUtil.ruleCalculate(RouterUtil.java:729)
at org.opencloudb.route.util.RouterUtil.routeByERParentKey(RouterUtil.java:640)
1.3.0.3-release版本为何下载的时候只有5kb
SET SESSION sql_mode='ANSI' is not recoginized and ignored
这语句不支持啊!
经测试发现在1.4版本中 mycat 支持 set names utf8的写法
不支持 set names ‘utf8’的写法
建议支持 set names ‘utf8’
这种PHP的特殊写法
mycat版本 Mycat-server-1.4-alpha-20150528130106-linux.tar.gz
报错原因 在使用mycat时 单表查询用了别名和distinct关键字 示例下:
select distinct a.member_id from sdb_ecorder_orders a where a.shop_id='a5b2de141d965041510406abed059f76' and a.createtime>=1341072000 and a.createtime<1343750400
如果sql语句中包含distinct 并且有别名 报如下错误:
java.sql.SQLException: java.lang.IllegalArgumentException: all columns in group by clause should be in the selected column list.!a.member_id
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3558)
at com.mysql.jdbc.MysqlIO.nextRowFast(MysqlIO.java:1553)
at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1409)
at com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:2872)
at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:476)
at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:2576)
at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:1757)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2167)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2648)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2077)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2228)
at cn.shopex.service.crm.ReportZoomStatistics.wrap810002(ReportZoomStatistics.java:1350)
at cn.shopex.service.crm.ReportZoomStatistics.wrapResult(ReportZoomStatistics.java:990)
at cn.shopex.service.crm.ReportZoomStatistics.handle(ReportZoomStatistics.java:959)
at cn.shopex.service.ServiceHandle.run(ServiceHandle.java:48)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
//获取异常数据库
$conn_info=new PDO("mysql:host=127.0.0.1;port=8806;dbname=testdb","test","test",array(PDO::ATTR_ERRMODE => 2, PDO::ATTR_EMULATE_PREPARES => true));
PHP PDO连接MyCAT自从加了两个参数后就报错,导致laravel等使用PDO的加框架不能使用MyCAT
数据库为Oracle,使用jdbc insert时发生这个异常。不使用MyCat直接插入Oracle的话正常。
java.sql.SQLException: Transaction error, need to rollback. errno:917 ORA-00917: 缺失逗号
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3878)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2478)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2625)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2551)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1861)
at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2073)
at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2009)
at com.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5094)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1994)
at com.cmbchina.cc.z390.loader.out.OracleInsertWriter.writeLoop(OracleInsertWriter.java:149)
at com.cmbchina.cc.z390.loader.out.DataWriter.run(DataWriter.java:35)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Sourc
explain
/!mycat: sql=select 1 from node_all/
INSERT INTO bas_category
( category_no
, category_name
, special_code
, parent_category_id
, level_no
, search_code
, affiliation
,
order_no
, enable_flag
, creator
, create_time
, modifier
, modify_time
, remarks
)
VALUES ('0108', '哈', '', '2', '2', '', '', '0', '1', '超级管理员', '2015-08-25 08:21:22',
'超级管理员', '2015-08-25 08:21:22', '');
运行后,显示只在一个节点执行,实际上会在node_all的所有节点执行(希望也是如此),希望能够看看这个bug以免产生误解,谢谢。
EXPLAIN
select 1 from node_all
单独运行这句会显示4个节点
node_all配置如下:
mycat版本:1.5
mysql驱动6.9.7、6.9.9:Mysql.Data.dll
c#实现事务代码如下:
开始事务操作:BeginTransaction()
try
{
插入一条数据A:executeUpdate()
提交commit();
}
catch (SQLException e)
{
回滚操作rollback()
e.printStackTrace();// 主键冲突异常,这是正常可能出现的业务逻辑
}
try
{
插入和上述相同的一条数据A:executeUpdate()
}
catch (SQLException e)
{
e.printStackTrace();
}
try
{
对上述相同的一条数据A做更新:executeUpdate()
}
catch (SQLException e)
{
e.printStackTrace();// 【不同点1】
}
结束事务操作:endTransaction()
上述代码在mycat环境下【不同点1】处抛出事务嵌套的异常:Nested transactions are not supported.数据update操作不成功。
但在直接连mysql的情况下,【不同点1】处不会报错,最后数据update成功
在查询中使用别名的情况下 between and 不能正确的路由到单个分片,会进行全表扫描
示例:
explain SELECT
member_id
FROM
sdb_ecorder_orders
WHERE
createtime between 1380556800 and 1383235200;
可以正确路由
explain SELECT
a.member_id
FROM
sdb_ecorder_orders a
WHERE
a.createtime between 1380556800 and 1383235200;
就会路由到所有分片
MyCat配置主从表且主从表都配置全局序列号递增时执行插入从表报错且导致客户端线程一直阻塞,报错信息如下:
oad catelet class:demo.catlets.BatchInsertSequence to run sql insert into xxx(a,b,c,status)
values(101,108,'1wegwege',1)
,
values(101,109,'remasdsaark',1)
07/30 17:51:38.110 ERROR $_NIOREACTOR-3-RW -BatchInsertSequence.route(......)
com.alibaba.druid.sql.parser.ParserException: syntax error, expect ')'
at com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser.parseValueClause(MySqlStatementParser.java:2009)
at com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser.parseInsert(MySqlStatementParser.java:1957)
at com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser.parseInsert(MySqlStatementParser.java:153)
at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:160)
at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatement(SQLStatementParser.java:1658)
at demo.catlets.BatchInsertSequence.route(BatchInsertSequence.java:82)
at org.opencloudb.route.handler.HintCatletHandler.route(HintCatletHandler.java:52)
驱动下载微软官方sqlserver jdbc4.0驱动,2.0我也试过不行,下载地址:
http://www.microsoft.com/zh-cn/download/details.aspx?id=11774。
代码调用的话我是从mysql官网下载Mysql.Data.dll,
下载地址:http://www.mysql.com/products/connector/,我是下的.net版本。
日志都会看到select timediff( curtime(), utc_time() )这么一个错误,客户端和代码调都一样,而且配置好sqlserver库,客户端是无法在mycat中看到表的,日志显示连接成功,但报上面的错误
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.