Mysql分表无法查询的可能性之一
这两天在折腾mysql分表的问题,主要是想保存一些数据,但是数据量会特别大,因此需要分表,翻阅了各种帖子进行尝试后,仍然在查询的时候查询不到数据,后来还是仔细看官网的文档解决了问题。
我出现的问题是由于在建立主表的时候,没有指定type=merge导致的,只是一个原因,另外一个很重要的原因就是主表的id一定不能是primary key,否则主表无法和字表关联查询。排除这两个错误之后,分表查询就正常了,下面是我用nodejs建立主表的一段代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
function initCityUnionTables(connection,callback){ var sql=initRankSql.replace('rank','city') .replace('AUTO_INCREMENT=1','') .replace('AUTO_INCREMENT','') .replace(',PRIMARY KEY (`id`)',''); var unionStr=' TYPE=MERGE union=('; for(var i=0;i<cityUnions;i++){ unionStr=unionStr+'`city_'+i+'`,'; } unionStr=unionStr.substr(0,unionStr.lastIndexOf(','))+') insert_method=no;' sql=sql+unionStr; connection.query(sql,function(err,result){ console.log('init city id table') initIdTable('city_id',connection,callback) }); }; |