我是 golang 和 MySQL 的新手,我正在使用开发框创建一个简单的网页,使用 golang(来自 2 个文件的代码在下面)来获取输入,将输入存储到数据库中并在网页上显示输入。目前在本地使用 MySQL 作为我的数据库,我的用户名是 root,密码是 abc,我的数据库也被命名为 abc。
在顶部我已经导入:
import (
_"github.com/go-sql-driver/mysql"
"database/sql"
)
当我提供我的网页时,我调用我的 connectDB 函数:
func init(){
INDEX_HTML , _ = ioutil.ReadFile("./templates/index.html")
connectDb()
}
func connectDb(){
//socket : var/run/mysqld/mysqld.sock
/* connection string examples :
db, err := sql.Open("mysql", "user:password@/dbname")
user:password@tcp(localhost:5555)/dbname?tls=skip-verify&autocommit=true
TCP using default port (3306) on localhost:
user:password@tcp/dbname?charset=utf8mb4,utf8&sys_var=esc%40ped
Use the default protocol (tcp) and host (localhost:3306):
user:password@/dbname
No Database preselected:
user:password@/
*/
db, err := sql.Open("mysql", "root:abc@/abc")
log.Println("DB: ", db)
checkErr(err)
// Open doesn't open a connection. Validate DSN data:
checkErr(err)
}
我的理解和根据https://github.com/go-sql-driver/mysql SQL.open 返回一个 * sql.DB,并且当程序遇到上面的以下代码时:
/* At the top of my code i have var db = *sql.DB */
log.Println("DB: ", db)
我在命令提示符中得到以下内容,上面的代码注释中记录了所有类型的示例连接字符串:
DB: &{0x99c410 root:abc@/abc 0 {0 0} [] [] 0 0xc820072180 false map[] map[] 0 0 0 < nil >}
我的 MySQL 数据库使用给定的用户名和密码通过命令行在本地运行良好,我可以通过手动插入以下查询获得一些项目。
mysql>
mysql> select * from ListItems
-> ;
+-------+
| items |
+-------+
| item1 |
| item2 |
+-------+
我试图了解消息是什么以及如何连接到 mysql 数据库以运行查询并插入数据库。
也许我的连接字符串有问题?尝试插入数据库时的错误示例:
016/06/20 02:22:36 http: panic serving 10.1.0.5:41861:
runtime error: invalid
memory address or nil pointer dereference
goroutine 7 [running]:
跃然一笑
相关分类