Skip to content

Commit 685eddb

Browse files
nItroFreeZerFs02
andauthored
Fixed error mapper for constraint errors (#63)
* Fixed error mapper for constraint errors Fixed error mapper for constraint errors and added error 1451. * Fixed error mapper regardless of whether SQLSTATE is present or not * Combined the two constraint errors Co-authored-by: Surya Asriadie <[email protected]> --------- Co-authored-by: Surya Asriadie <[email protected]>
1 parent 57be534 commit 685eddb

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

mysql.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,20 +122,28 @@ func errorMapper(err error) error {
122122
msg = err.Error()
123123
errCodeSep = ':'
124124
errCodeIndex = strings.IndexRune(msg, errCodeSep)
125+
errStateSep = '('
126+
errStateIndex = -1
125127
)
126128

127129
if errCodeIndex < 0 {
128130
errCodeIndex = 0
129131
}
130132

131-
switch msg[:errCodeIndex] {
133+
errStateIndex = strings.IndexRune(msg[:errCodeIndex], errStateSep)
134+
errStateIndex--
135+
if errStateIndex < 0 {
136+
errStateIndex = errCodeIndex
137+
}
138+
139+
switch (msg[:errCodeIndex])[:errStateIndex] {
132140
case "Error 1062":
133141
return rel.ConstraintError{
134142
Key: sql.ExtractString(msg, "key '", "'"),
135143
Type: rel.UniqueConstraint,
136144
Err: err,
137145
}
138-
case "Error 1452":
146+
case "Error 1451", "Error 1452":
139147
return rel.ConstraintError{
140148
Key: sql.ExtractString(msg, "CONSTRAINT `", "`"),
141149
Type: rel.ForeignKeyConstraint,

0 commit comments

Comments
 (0)