GORMの公式ドキュメントには、レコードの存在をテストする方法が示されています。
user := User{Name: "Jinzhu", Age: 18, Birthday: time.Now()}
// returns true if record hasn’t been saved (primary key `Id` is blank)
db.NewRecord(user) // => true
db.Create(&user)
// will return false after `user` created
db.NewRecord(user) // => false
これは、レコード作成のエラーを間接的にテストするために使用できますが、障害が発生した場合に有用な情報は報告されません。
のソース コードdb.Create
を確認したところ、続行する前にエラーをチェックする何らかのスタック フレーム インスペクションがあるようです。つまり、トランザクション エラーは黙って失敗します。
func Create(scope *Scope) {
defer scope.Trace(NowFunc())
if !scope.HasError() {
// actually perform the transaction
}
}
- これはバグですか、それとも何か不足していますか?
- トランザクションの失敗をどのように通知することができますか?
- 有用なデバッグ情報はどこで入手できますか?