{"id":9493,"date":"2022-05-26T15:08:55","date_gmt":"2022-05-26T07:08:55","guid":{"rendered":"https:\/\/www.gbase8.cn\/?p=9493"},"modified":"2022-07-15T09:49:22","modified_gmt":"2022-07-15T01:49:22","slug":"go-%e8%ae%bf%e9%97%aegbase-8a-%e6%95%b0%e6%8d%ae%e5%ba%93%e7%9a%84%e4%b8%80%e4%b8%aa%e6%96%b9%e6%b3%95","status":"publish","type":"post","link":"https:\/\/www.gbase8.cn\/en\/9493","title":{"rendered":"Go \u8bbf\u95eeGBase 8a \u6570\u636e\u5e93\u7684\u4e00\u4e2a\u65b9\u6cd5"},"content":{"rendered":"<p>\u622a\u81f3\u76ee\u524d(2022-05-26)\uff0cGBase 8a\u5c1a\u672a\u53d1\u5e03go\u8bed\u8a00\u7684\u9a71\u52a8\uff0c\u672c\u6587\u5c1d\u8bd5\u901a\u8fc7go-sql-driver\/mysql\u9a71\u52a8\u6765\u8bbf\u95eeGBase 8a\u6570\u636e\u5e93\u3002<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Directory Navigation<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a2b1562e9995\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewbox=\"0 0 24 24\" version=\"1.2\" baseprofile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a2b1562e9995\"  aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.gbase8.cn\/en\/9493\/#Go_%E9%A9%B1%E5%8A%A8%E5%AE%89%E8%A3%85\" >Go \u9a71\u52a8\u5b89\u88c5<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.gbase8.cn\/en\/9493\/#Go_%E4%BB%A3%E7%A0%81\" >Go \u4ee3\u7801<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.gbase8.cn\/en\/9493\/#GBase_8a%E8%A1%A8\" >GBase 8a\u8868<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.gbase8.cn\/en\/9493\/#%E6%89%A7%E8%A1%8C\" >\u6267\u884c<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Go_%E9%A9%B1%E5%8A%A8%E5%AE%89%E8%A3%85\"><\/span>Go \u9a71\u52a8\u5b89\u88c5<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u4ecegithub.com\u4e0b\u8f7d\u9a71\u52a8<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>E:\\go\\hello&gt;go get github.com\/go-sql-driver\/mysql\ngo: downloading github.com\/go-sql-driver\/mysql v1.6.0\ngo: added github.com\/go-sql-driver\/mysql v1.6.0<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Go_%E4%BB%A3%E7%A0%81\"><\/span>Go \u4ee3\u7801<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u6765\u81ea\u4e8e\u5b98\u7f51\u7684\u6837\u4f8b <a href=\"https:\/\/go.dev\/doc\/tutorial\/database-access\">https:\/\/go.dev\/doc\/tutorial\/database-access<\/a><\/p>\n\n\n\n<p>\u6ce8\u610f\u5176\u4e2d\u589e\u52a0\u4e86 AllowNativePasswords: true \u7684\u914d\u7f6e\uff0c\u5426\u5219\u4f1a\u62a5\u9519 <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;mysql] 2022\/05\/26 14:46:43 connector.go:95: could not use requested auth plugin 'mysql_native_password': this user requires mysql native password authentication.\n2022\/05\/26 14:46:43 this user requires mysql native password authentication.<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package main\nimport (\n    \"database\/sql\"\n    \"fmt\"\n    \"log\"\n    \"os\"\n\n    \"github.com\/go-sql-driver\/mysql\"\n)\nvar db *sql.DB\n\ntype TableT1 struct {\n    ID     int64\n    NAME   string\n}\n\nfunc main() {\n    \/\/ Capture connection properties.\n    cfg := mysql.Config{\n        User:   os.Getenv(\"DBUSER\"),\n        Passwd: os.Getenv(\"DBPASS\"),\n        Net:    \"tcp\",\n        Addr:   \"192.168.56.1:5258\",\n        DBName: \"testdb\",\n        <span class=\"has-inline-color has-luminous-vivid-orange-color\">AllowNativePasswords: true<\/span>,\n    }\n    \/\/ Get a database handle.\n    var err error\n    db, err = sql.Open(\"mysql\", cfg.FormatDSN())\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    pingErr := db.Ping()\n    if pingErr != nil {\n        log.Fatal(pingErr)\n    }\n    fmt.Println(\"Connected!\")\n    \n    tableT1s, err := selectTable(\"1\")\n    if err != nil {\n        log.Fatal(err)\n    }\n    fmt.Printf(\"Albums found: %v\\n\", tableT1s)\n\n}\n\nfunc selectTable(name string) (&#91;]TableT1, error) {\n    \/\/ An tableT1s slice to hold data from returned rows.\n    var tableT1s &#91;]TableT1\n\n    rows, err := db.Query(\"SELECT * FROM t1 WHERE id = ?\", name)\n    if err != nil {\n        return nil, fmt.Errorf(\"selectTable %q: %v\", name, err)\n    }\n    defer rows.Close()\n    \/\/ Loop through rows, using Scan to assign column data to struct fields.\n    for rows.Next() {\n        var alb TableT1\n        if err := rows.Scan(&amp;alb.ID,&amp;alb.NAME); err != nil {\n            return nil, fmt.Errorf(\"selectTable %q: %v\", name, err)\n        }\n        tableT1s = append(tableT1s, alb)\n    }\n    if err := rows.Err(); err != nil {\n        return nil, fmt.Errorf(\"selectTable %q: %v\", name, err)\n    }\n    return tableT1s, nil\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"GBase_8a%E8%A1%A8\"><\/span>GBase 8a\u8868<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>2\u4e2a\u5b57\u6bb5\u7684\u8868\uff0c\u6ca1\u6709\u91c7\u7528\u5b98\u7f51\u7684\u8868\u7ed3\u6784<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gbase&gt; desc testdb.t1;\n+-------+--------------+------+-----+---------+-------+\n| Field | Type         | Null | Key | Default | Extra |\n+-------+--------------+------+-----+---------+-------+\n| id    | int(11)      | YES  | MUL | NULL    |       |\n| name  | varchar(100) | YES  |     | NULL    |       |\n+-------+--------------+------+-----+---------+-------+\n2 rows in set (Elapsed: 00:00:00.00)\n\ngbase&gt; select * from testdb.t1 where id=1;\n+------+---------+\n| id   | name    |\n+------+---------+\n|    1 | Name_10 |\n+------+---------+\n1 row in set (Elapsed: 00:00:00.01)\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E6%89%A7%E8%A1%8C\"><\/span>\u6267\u884c<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>E:\\go\\hello&gt;go run .\nConnected!\nAlbums found: &#91;{1 Name_10}]\n\nE:\\go\\hello&gt;<\/code><\/pre>\n\n\n\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>\u622a\u81f3\u76ee\u524d(2022-05-26)\uff0cGBase 8a\u5c1a\u672a\u53d1\u5e03go\u8bed\u8a00\u7684\u9a71\u52a8\uff0c\u672c\u6587\u5c1d\u8bd5\u901a\u8fc7go-sql-driver\/mysql\u9a71\u52a8\u6765\u8bbf\u95eeGBase 8a\u6570\u636e\u5e93\u3002<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,1],"tags":[113],"class_list":["post-9493","post","type-post","status-publish","format-standard","hentry","category-gbase8a","category-1","tag-golang"],"_links":{"self":[{"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/posts\/9493","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/comments?post=9493"}],"version-history":[{"count":13,"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/posts\/9493\/revisions"}],"predecessor-version":[{"id":9506,"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/posts\/9493\/revisions\/9506"}],"wp:attachment":[{"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/media?parent=9493"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/categories?post=9493"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/tags?post=9493"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}