我无法使用Golang的Fiber框架连接MySQL数据库。

huangapple go评论77阅读模式
英文:

I cant connect mysql database with fiber using golang

问题

我是你的中文翻译助手,以下是你要翻译的内容:

我是golang的新手,我想连接本地的mysql数据库。我正在使用mysql-workbench作为GUI工具,它使用3306端口。当我构建项目时,我遇到了listen tcp4 :3306: bind: address already in use错误。如果我从app.Listen中更改端口,它可以工作,但无法连接我的mysql数据库。我该如何解决这个问题?请有人帮帮我吗?

package db

import (
	"database/sql"
	"fmt"

	_ "github.com/go-sql-driver/mysql"
)

var db *sql.DB

func Connection() {
	database, err := sql.Open("mysql", "root:123456789@/deneme")

	if err != nil {
		panic(err.Error())
	}
	fmt.Print("database connection OK")
	db = database
}

func DB() *sql.DB {
	return db
}

这是我的处理程序:

package handlers

import (
	"fmt"
	"go-login/db"
	"log"

	"github.com/gofiber/fiber/v2"
)

func Handlers() {

	app := fiber.New()

	app.Get("/", func(c *fiber.Ctx) error {
		return c.SendString("Hello, World 👋!")
	})

	app.Post("/register", func(c *fiber.Ctx) error {
		data, err := db.DB().Query("INSERT INTO user(email,password) VALUES('abcd@g.com','123456')")
		if err != nil {
			log.Fatal(err)
		}
		fmt.Println(data.Columns())
		return c.SendString("OK")
	})

	log.Fatal(app.Listen(":3306"))
}
英文:

I'm new on golang and i want to connect localhost mysql. I'm using mysql-workbench for gui and it's using 3306 port. When i build project i'm getting
listen tcp4 :3306: bind: address already in use error. If i change port from app.Listen it's working but won't connect my mysql database. How can i solve this issue ? Anyone help me please ?

package db

 import (
  "database/sql"
  "fmt"

  _ "github.com/go-sql-driver/mysql"
  )

var db *sql.DB

func Connection() {
  database, err := sql.Open("mysql", "root:123456789@/deneme")

  if err != nil {
	panic(err.Error())
  }
 fmt.Print("database connection OK")
 db = database
 }

func DB() *sql.DB {
  return db
}

Also that's my handlers

package handlers

 import (
"fmt"
"go-login/db"
"log"

"github.com/gofiber/fiber/v2"
)

func Handlers() {

app := fiber.New()

app.Get("/", func(c *fiber.Ctx) error {
	return c.SendString("Hello, World 👋!")
})

app.Post("/register", func(c *fiber.Ctx) error {
	data, err := db.DB().Query("INSERT INTO user(email,password) VALUES('abcd@g.com','123456')")
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(data.Columns())
	return c.SendString("OK")
})

log.Fatal(app.Listen(":3306"))
}

答案1

得分: 3

将你的端口更改为其他任何端口
例如:

log.Fatal(app.Listen(":80"))

作为默认的HTTP应用程序。
或者

log.Fatal(app.Listen(":8000"))

如果你想要的话。

你不能使用另一个应用程序正在使用的端口。

英文:

change your port to anything else
example:

log.Fatal(app.Listen(":80"))

as a default http application.
or

log.Fatal(app.Listen(":8000"))

if you want.

You cannot use a port that another application is using.

huangapple
  • 本文由 发表于 2022年1月24日 05:28:20
  • 转载请务必保留本文链接:https://go.coder-hub.com/70826737.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定