Почему GORM зависает после сохранения - PullRequest
0 голосов
/ 22 июня 2019

Пытался получить элемент из БД, обновить его и сохранить обратно в БД с помощью 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.
...