【发布时间】:2017-04-11 21:13:15
【问题描述】:
我在后端使用 GoLang,并使用 PostgreSQL 作为数据库。我是使用 Go 连接 PostgreSQL 数据库的新手。我使用Beego 作为后端。我想使用 Golang database/sql 包和 lib/pq 创建一个包含 JSON 类型字段之一的表。我就是这样做的
这是我的创建表查询
createtable:= `CREATE TABLE apply_leave1 (
leaveid serial PRIMARY KEY NOT NULL ,
empid varchar(10) NOT NULL ,
leavedays double precision NOT NULL DEFAULT 0 ,
mdays double precision NOT NULL DEFAULT 0 ,
leavetype varchar(20) NOT NULL DEFAULT '' ,
daytype text NOT NULL '',
leavefrom timestamp with time zone NOT NULL,
leaveto timestamp with time zone NOT NULL,
applieddate timestamp with time zone NOT NULL,
leavestatus varchar(15) NOT NULL DEFAULT '' ,
resultdate timestamp with time zone,
certificatestatus bool NOT NULL DEFAULT FALSE
certificate json NULL)`
conn := fmt.Sprintf(
"user=%s password=%s dbname=%s sslmode=disable",
"postgres",
"root",
"employee")
log.Println("Creating a new connection: %v", conn)
db, err := sql.Open("postgres", conn)
stmt, err1 := db.Prepare(createtable)
defer stmt.Close()
_, err = stmt.Exec()
if err != nil {
fmt.Println(err.Error()
}
}
这是给我以下错误
处理程序因错误运行时错误而崩溃:无效的内存地址或 nil 指针取消引用
但是当我使用查询从表中选择某些内容时,表创建查询或其他执行的 sql 代码没有问题。我很感激任何帮助。谢谢!
【问题讨论】:
-
请简化您的代码 sn-p 或提供引发错误的具体行。我们无法构建您的所有应用程序并对其进行调试。
-
还有一件更重要的事情 - 您的错误与 sql 或您使用的任何库无关。这只是一个错误的指针操作。
-
sorry.Beginner 堆栈溢出。感谢您的建议 - I159。编辑代码以使其准确。我可以知道哪个指针是问题。谢谢
-
没关系,看stackoverflow上的教程“如何提问”即可。我会尽力帮助你的。
-
请指定因上述错误而崩溃的行。
标签: database postgresql go beego