From be1b17d4933e0a5f3dd708b89a81ce8088a9bd44 Mon Sep 17 00:00:00 2001 From: ahaostudy <1993584108@qq.com> Date: Mon, 4 Mar 2024 22:05:10 +0800 Subject: [PATCH] feat: map mysql error 1451 to gorm error --- error_translator.go | 1 + error_translator_test.go | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/error_translator.go b/error_translator.go index bf91276..44ab277 100644 --- a/error_translator.go +++ b/error_translator.go @@ -9,6 +9,7 @@ import ( // The error codes to map mysql errors to gorm errors, here is the mysql error codes reference https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html. var errCodes = map[uint16]error{ 1062: gorm.ErrDuplicatedKey, + 1451: gorm.ErrForeignKeyViolated, 1452: gorm.ErrForeignKeyViolated, } diff --git a/error_translator_test.go b/error_translator_test.go index a23e6db..527802e 100644 --- a/error_translator_test.go +++ b/error_translator_test.go @@ -29,6 +29,11 @@ func TestDialector_Translate(t *testing.T) { args: args{err: &mysql.MySQLError{Number: uint16(1062)}}, want: gorm.ErrDuplicatedKey, }, + { + name: "it should translate error to ErrForeignKeyViolated when the error number is 1451", + args: args{err: &mysql.MySQLError{Number: uint16(1451)}}, + want: gorm.ErrForeignKeyViolated, + }, { name: "it should translate error to ErrForeignKeyViolated when the error number is 1452", args: args{err: &mysql.MySQLError{Number: uint16(1452)}},