diff --git a/ethdb/kv_lmdb.go b/ethdb/kv_lmdb.go
index d867012d0f8a67fad112fd6b6442f6e99919a8d3..50ff2292406287a7d23984bf367dfa6285073802 100644
--- a/ethdb/kv_lmdb.go
+++ b/ethdb/kv_lmdb.go
@@ -1172,15 +1172,14 @@ func (c *LmdbCursor) putDupSort(key []byte, value []byte) error {
 	}
 
 	if len(key) != from {
-		_, _, err := c.set(key)
+		err := c.putNoOverwrite(key, value)
 		if err != nil {
-			if lmdb.IsNotFound(err) {
-				return c.put(key, value)
+			if lmdb.IsKeyExists(err) {
+				return c.putCurrent(key, value)
 			}
 			return err
 		}
-
-		return c.putCurrent(key, value)
+		return nil
 	}
 
 	value = append(key[to:], value...)
diff --git a/ethdb/kv_mdbx.go b/ethdb/kv_mdbx.go
index 1011c06376137697615b787dc5ff1105636f6d6e..f3a43f78e50c8d07e2885b6215eeeee1b9462754 100644
--- a/ethdb/kv_mdbx.go
+++ b/ethdb/kv_mdbx.go
@@ -1161,15 +1161,14 @@ func (c *MdbxCursor) putDupSort(key []byte, value []byte) error {
 	}
 
 	if len(key) != from {
-		_, _, err := c.set(key)
+		err := c.putNoOverwrite(key, value)
 		if err != nil {
-			if mdbx.IsNotFound(err) {
-				return c.put(key, value)
+			if mdbx.IsKeyExists(err) {
+				return c.putCurrent(key, value)
 			}
 			return err
 		}
-
-		return c.putCurrent(key, value)
+		return nil
 	}
 
 	value = append(key[to:], value...)
diff --git a/ethdb/mdbx/error.go b/ethdb/mdbx/error.go
index eaf433c0af51f6a9c2f31a1f1f017181291c4771..6c70ec4426b281e082feb83679cd70cc566d3574 100644
--- a/ethdb/mdbx/error.go
+++ b/ethdb/mdbx/error.go
@@ -92,6 +92,10 @@ func IsNotFound(err error) bool {
 	return IsErrno(err, NotFound)
 }
 
+func IsKeyExists(err error) bool {
+	return IsErrno(err, KeyExist)
+}
+
 // IsNotExist returns true the path passed to the Env.Open method does not
 // exist.
 func IsNotExist(err error) bool {
diff --git a/go.mod b/go.mod
index 4b4688280edf25d63e44025550fc4c442330ff8a..7ed56ba64e8945da91308e3542eff6cb09b5f532 100644
--- a/go.mod
+++ b/go.mod
@@ -48,7 +48,7 @@ require (
 	github.com/julienschmidt/httprouter v1.2.0
 	github.com/karalabe/usb v0.0.0-20191104083709-911d15fe12a9
 	github.com/kevinburke/go-bindata v3.21.0+incompatible
-	github.com/ledgerwatch/lmdb-go v1.17.1
+	github.com/ledgerwatch/lmdb-go v1.17.2
 	github.com/llgcode/draw2d v0.0.0-20200603164053-19660b984a28
 	github.com/logrusorgru/aurora v2.0.3+incompatible
 	github.com/mattn/go-colorable v0.1.7
diff --git a/go.sum b/go.sum
index 5c14f2c581f3c664532cd876b4f8f5091c0f2dac..db3413bba375a7e66b8d98c47f16f3e69b621f01 100644
--- a/go.sum
+++ b/go.sum
@@ -499,8 +499,8 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
 github.com/kylelemons/godebug v0.0.0-20170224010052-a616ab194758/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k=
 github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
-github.com/ledgerwatch/lmdb-go v1.17.1 h1:1Ridp9Pf4Ao3Db9JzpcwCDusWISwqhbghsg0Rj27GGw=
-github.com/ledgerwatch/lmdb-go v1.17.1/go.mod h1:NKRpCxksoTQPyxsUcBiVOe0135uqnJsnf6cElxmOL0o=
+github.com/ledgerwatch/lmdb-go v1.17.2 h1:O4b/r1IjQSN1nzz45kgUzYC8XeLGcV4+I/JGHgeOkPo=
+github.com/ledgerwatch/lmdb-go v1.17.2/go.mod h1:NKRpCxksoTQPyxsUcBiVOe0135uqnJsnf6cElxmOL0o=
 github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y=
 github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
 github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=