首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

golang mysql 确诊之旅(2000万开房数据被曝光引发的血案)

2013-10-25 
golang mysql 诊断之旅(2000万开房数据被曝光引发的血案)最近由于某某漏洞原因,2000万开房数据被曝光,数据

golang mysql 诊断之旅(2000万开房数据被曝光引发的血案)

最近由于某某漏洞原因,2000万开房数据被曝光,数据是csv格式,打开慢的要死,于是想把这5000w的开房数据导入mysql,然后用go写个简单的查询工具。


悲剧开始了:

第一步,下载 mysql模块,go get github.com/go-sql-driver/mysql,

第二步,写个小例子测试下

@ASTA谢: 因为你之前安装过github.com/go-sql-driver/mysql,所以你go get的时候不会更新,你必须使用go get -u更新,而git clone是最新版本的更新(2013-10-24 16:23:57),这个go get -u 是更新,但不是问题所在,@jimmykuu:默认是去获取tag为go1的代码,果然如jimmykuu所说:我查看tag为go1的代码:https://github.com/go-sql-driver/mysql/tree/go1,和go get下来的相同,而且golang上有说明。。。"When checking out or updating a package, get looks for a branch or tag that matches the locally installed version of Go. The most important rule is that if the local installation is running version "go1", get searches for a branch or tag named "go1". If no such version exists it retrieves the most recent version of the package."

所以我的结论就是go-sql-driver中的go1 tag充满bug,不负责任!

2. 刚才看了下,之所以其他人没有碰到这个问题,是因为我正好用的古老版本mysql4.1 ,补丁在这fix crash when connect to mysql4.1:https://github.com/go-sql-driver/mysql/commit/4a178617b97609ebd4d4a0ae5791225540c1bb26#diff-2357b8494bbd2f27c09e61fc8ef5f092 


     }          // EOF Packet  -    if data[0] == iEOF && len(data) == 5 {  +    if data[0] == iEOF && (len(data) == 5 || len(data) == 1) {         if i != count {           err = fmt.Errorf("ColumnsCount mismatch n:%d len:%d", count, len(columns))         }

3.用git clone的新版本替换后,切记删掉pkg下生成的mysql.a文件!!


热点排行