mysql pool 查询为空

fancyecommerce · 2018-01-06 21:38:22 · 949 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2018-01-06 21:38:22 的主题,其中的信息可能已经有所发展或是发生改变。

发现了一个不错的包,地址为:https://github.com/hopehook/golang-db

大致把mysql 连接池封装了起来,看着很不错的样子

我尝试了一下,查询为空,不知道为什么,那位高人给看看:

my main package:

package main

import(
    "github.com/gin-gonic/gin"
    "net/http"
    "fecshop.com/module/user" 
    //"fecshop.com/common/cdb"  
    _ "github.com/go-sql-driver/mysql" 
    mysqlPool "github.com/hopehook/golang-db/mysql"
)


func mysqlDBPool() *mysqlPool.SQLConnPool{
    host := `127.0.0.1:3306`
    database := `go_test`
    user := `root`
    password := `xxx`
    charset := `utf8`
    // 用于设置最大打开的连接数
    maxOpenConns := 200
    // 用于设置闲置的连接数
    maxIdleConns := 100
    mysqlDB := mysqlPool.InitMySQLPool(host, database, user, password, charset, maxOpenConns, maxIdleConns)

    return mysqlDB
}

func main() { 
    mysqlDB := mysqlDBPool();
    r := gin.Default()


    v2 := r.Group("/v2")
    {
        // 查询部分
        v2.GET("/users", func(c *gin.Context) {
            data := user.List2(mysqlDB);
            c.JSON(http.StatusOK, data)
        })
    }

    r.Run("120.24.37.249:3000") // listen and serve on 0.0.0.0:8080

}

my user package code :

package user

import (    
    "fmt"
    "github.com/gin-gonic/gin"  
    mysqlPool "github.com/hopehook/golang-db/mysql"
)

func List2(mysqlDB *mysqlPool.SQLConnPool) gin.H{
    body := make(gin.H) 
    rows, err := mysqlDB.Query("SELECT * From user")
    if err != nil {
        fmt.Printf("%s\r\n","mysql query error")
    }
    fmt.Printf("%v\r\n",rows)
    var dbdata []gin.H
    if rows != nil {
        for _, row := range rows {
            h := make(gin.H) 
            for k,v := range row {
                h[k] = v

            }
            dbdata = append(dbdata, h)
        }
    }
    body["data"] = dbdata
    return body
}

fmt.Printf("%v\r\n",rows) :

[map[] map[] map[] map[] map[] map[] map[] map[] map[]]

return empty

go_test.user:

CREATE TABLE IF NOT EXISTS `user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT '',
  `age` int(11) DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;

--
-- 转存表中的数据 `user`
--

INSERT INTO `user` (`id`, `name`, `age`) VALUES
(1, '111', 111),
(2, 'terry', 44),
(3, 'terry', 55),
(4, 'terry', 44),
(5, 'terry', 44),
(6, 'terry', 44),
(7, 'terry', 44),
(8, 'te11rry', 929),
(10, 'terry', 66);

can you help me ? thank you!


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

949 次点击  
加入收藏 微博
5 回复  |  直到 2018-01-08 12:13:30
channel
channel · #1 · 7年之前

标准库 database/sql 不是自带了连接池的功能吗?

MariaWf
MariaWf · #2 · 7年之前
channelchannel #1 回复

标准库 database/sql 不是自带了连接池的功能吗?

是的,这个是进行了封装,封装的比较简单,就一个文件,你可以帮看一下原因吗?查询总是为空

fancyecommerce
fancyecommerce · #3 · 7年之前
polaris
polaris · #4 · 7年之前

特意跟了下 https://github.com/hopehook/golang-db 的代码,发现他依赖 https://github.com/hopehook/sqlinternals ,而这个项目有些代码要求和 github.com/go-sql-driver/mysql 代码保持同步,而里面有一处明显已经不同步了。https://github.com/hopehook/sqlinternals/blob/780f376975929d231cfbfb165d32707935ffbe38/mysqlinternals/unsafe.go#L76 ,所以总是空。

@MariaWf @fancyecommerce 话说你俩是一个公司还是一个人多个账号? :joy:

fancyecommerce
fancyecommerce · #5 · 7年之前
polarispolaris #4 回复

特意跟了下 https://github.com/hopehook/golang-db 的代码,发现他依赖 https://github.com/hopehook/sqlinternals ,而这个项目有些代码要求和 github.com/go-sql-driver/mysql 代码保持同步,而里面有一处明显已经不同步了。https://github.com/hopehook/sqlinternals/blob/780f376975929d231cfbfb165d32707935ffbe38/mysqlinternals/unsafe.go#L76 ,所以总是空。 @MariaWf @fancyecommerce 话说你俩是一个公司还是一个人多个账号? :joy:

多谢。

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传