Пытался получить элемент из БД, обновить его и сохранить обратно в БД с помощью GORM. но процесс зависает после сохранения.
Я также пытался обернуть эти команды в транзакцию, но все еще вижу, что процесс зависает при сохранении.
Однако я заметил, что если я просто нажму «Сначала», чтобы получить предмет, и «Сохранить», чтобы сохранить предмет, процесс завершится успешно.
Это действительно озадачивает меня, потому что, очевидно, в документации GORM пример обновления - это именно то, чего я пытаюсь достичь здесь.
Пример в документе
db.First(&user)
user.Name = "jinzhu 2"
user.Age = 100
db.Save(&user)
Мой код
type Item struct {
PK int `json:"-" gorm:"index;primary_key"`
ID string `json:"id" gorm:"index" external_reference_key:"true"`
MEMO string `json:"MEMO"`
}
func main() {
db, err := gorm.Open("postgres", "host=localHost port=5432 user=postgres password=5206 dbname=item sslmode=disable")
if err != nil {
panic(err)
}
db.LogMode(true)
item := Item{}
db.First(&item) //Gets the item
item.MEMO = "[hpapaapodfiso]" //Change the field
db.Save(&item) //Save back to db
fmt.Printf("%v",item) //never executed, process stops at Save
}
Может ли кто-нибудь объяснить мне, что изменило ситуацию? А что вызвало остановку / зависание процесса?
Действительно ценится.
Обновление с журналом postgres:
2019-06-22 15:39:07 PDT LOG: database system is ready to accept connections
2019-06-22 15:39:08 PDT LOG: autovacuum launcher started
2019-06-22 15:40:08 PDT FATAL: canceling authentication due to timeout
2019-06-22 15:49:23 PDT LOG: could not receive data from client: No connection could be made because the target machine actively refused it.
2019-06-22 15:53:22 PDT LOG: could not receive data from client: No connection could be made because the target machine actively refused it.
2019-06-22 15:53:31 PDT LOG: could not receive data from client: No connection could be made because the target machine actively refused it.
2019-06-22 15:53:46 PDT LOG: could not receive data from client: No connection could be made because the target machine actively refused it.
2019-06-22 16:05:42 PDT ERROR: role "username" does not exist
2019-06-22 16:05:42 PDT STATEMENT: REVOKE CONNECT ON DATABASE triggers FROM PUBLIC, username;
2019-06-22 16:06:14 PDT FATAL: terminating connection due to administrator command
2019-06-22 16:06:14 PDT FATAL: terminating connection due to administrator command
2019-06-22 16:06:14 PDT LOG: could not send data to client: No connection could be made because the target machine actively refused it.
2019-06-22 16:06:14 PDT FATAL: terminating connection due to administrator command
2019-06-22 16:06:14 PDT LOG: could not send data to client: No connection could be made because the target machine actively refused it.
2019-06-22 16:06:14 PDT FATAL: terminating connection due to administrator command
2019-06-22 16:06:14 PDT LOG: could not send data to client: No connection could be made because the target machine actively refused it.
2019-06-22 16:06:14 PDT LOG: could not send data to client: No connection could be made because the target machine actively refused it.