Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PostgreSQL数据库中创建内容_Postgresql_Go_Crud - Fatal编程技术网

如何在PostgreSQL数据库中创建内容

如何在PostgreSQL数据库中创建内容,postgresql,go,crud,Postgresql,Go,Crud,我正在学习使用PostgreSQL和GORM。我正在创建一个结构,连接到数据库,并尝试写入数据库 源代码: db,err:=gorm.Open(“postgres”,“user=superuser password=ojcafizp123 dbname=gorm sslmode=disable”) 如果出错!=零{ 死机(err.Error()) } 延迟db.Close() 数据库:=db.db() err=database.Ping() 如果出错!=零{ 死机(err.Error()) }

我正在学习使用PostgreSQL和GORM。我正在创建一个结构,连接到数据库,并尝试写入数据库

源代码:

db,err:=gorm.Open(“postgres”,“user=superuser password=ojcafizp123 dbname=gorm sslmode=disable”)
如果出错!=零{
死机(err.Error())
}
延迟db.Close()
数据库:=db.db()
err=database.Ping()
如果出错!=零{
死机(err.Error())
}
Println(“与PostgreSQL的连接成功!”)
端口:=“:3000”
r:=chi.NewRouter()
r、 获取(“/api/test”,test)
http.listendServe(端口,r)
}
func CreateRate(w http.ResponseWriter,r*http.Request){
db,err:=gorm.Open(“postgres”,“user=superuser password=ojcafizp123 dbname=gorm sslmode=disable”)
治愈:=加密{“BTC”,“USD”,10000100}
if db.NewRecord(治愈){
err=db.Create(&cure).错误
如果错误!=零{
死机(err.Error())
}
}
}
结构:

类型加密结构{
Cur1字符串`json:“Cur1”`
Cur2字符串`json:“Cur2”`
速率浮动64`json:“速率”`
Timestamp int64`json:“Timestamp”`
}
正在尝试在数据库中查找我的记录:

func测试(w http.ResponseWriter,r*http.Request){
db,err:=gorm.Open(“postgres”,“user=superuser password=ojcafizp123 dbname=gorm sslmode=disable”)
var testcur加密
db.First(&testcur)
fmt.Println(测试电流)
如果错误!=零{
fmt.Println(“未检测到测试电流”)
}
}
但我明白了:

已成功连接到PostgreSQL!{0}

(/home/superuser/go/src/CryptoProject/main.go:97)[2019-07-27 05:09:10]pq:关系“加密”不存在


连接正在工作,但基仍然为空。

错误表明表
cryptos
当前不存在,这就是插入不工作且数据库中没有任何内容的原因

我以前没有专门使用GORM,但是如果它与其他ORM类似,则需要创建一个表示表的数据模型,然后它可以使用该模型创建表。对其文档的快速扫描显示GORM有一个名为的函数,可以针对


您还可以通过psql等工具使用常规SQL在GORM之外创建表。

除了@khampson之外,您还可以使用
AutoMigrate
功能:

type Product struct {
  gorm.Model
  Code string
  Price uint
}

// Migrate the schema
db.AutoMigrate(&Product{})

.

为了补充@khampson的答案,您实际上没有调用
CreateRate
,因此即使您创建了表,但没有先插入一些内容,
测试仍然会失败。还有一件事,您在
测试
处理程序中处理错误的方法是错误的,首先您忽略了从
打开
返回的错误,然后,当您首先调用
时,您会检查从
打开
返回的错误,而不是检查这是否产生了错误。对此进行扩展:。