diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
 ## MASTER
+## Dotenv 0.5.2.4
+* Add error message when there is more than one definition in the Scheme for the
+same env
+
 ## Dotenv 0.5.2.3
+* Update bounds `exceptions` == 0.9.*
 * Support `megaparsec` >= 6.4.0
 
 ## Dotenv 0.5.2.1
diff --git a/dotenv.cabal b/dotenv.cabal
--- a/dotenv.cabal
+++ b/dotenv.cabal
@@ -1,5 +1,5 @@
 name:                dotenv
-version:             0.5.2.3
+version:             0.5.2.4
 synopsis:            Loads environment variables from dotenv files
 homepage:            https://github.com/stackbuilders/dotenv-hs
 description:
@@ -65,7 +65,7 @@
                        , process >= 1.4.3.0
                        , text
                        , transformers >=0.4 && < 0.6
-                       , yaml
+                       , yaml >= 0.8
   other-modules: Paths_dotenv
 
   hs-source-dirs:      app
@@ -93,8 +93,8 @@
                        , process >= 1.4.3.0
                        , text
                        , transformers >=0.4 && < 0.6
-                       , exceptions >= 0.8 && < 0.9
-                       , yaml
+                       , exceptions >= 0.8 && < 0.10
+                       , yaml >= 0.8
 
   if !impl(ghc >= 7.10)
     build-depends:      void         == 0.7.*
@@ -135,9 +135,9 @@
                      , process >= 1.4.3.0
                      , text
                      , transformers >=0.4 && < 0.6
-                     , exceptions >= 0.8 && < 0.9
+                     , exceptions >= 0.8 && < 0.10
                      , hspec-megaparsec >= 1.0 && < 2.0
-                     , yaml
+                     , yaml >= 0.8
 
   if !impl(ghc >= 7.10)
     build-depends:      void         == 0.7.*
diff --git a/spec/Configuration/Dotenv/SchemeSpec.hs b/spec/Configuration/Dotenv/SchemeSpec.hs
--- a/spec/Configuration/Dotenv/SchemeSpec.hs
+++ b/spec/Configuration/Dotenv/SchemeSpec.hs
@@ -2,11 +2,31 @@
 
 import Configuration.Dotenv.Scheme
 import Configuration.Dotenv.Scheme.Types
+import Control.Exception (evaluate)
 
 import Test.Hspec
 
 spec :: Spec
-spec =
+spec = do
+  describe "checkScheme" $ do
+    context "when the env configs are unique" $
+      it "should succeed the check" $
+        let schemeEnvs =
+              [ Env "FOO" EnvBool True
+              , Env "BAR" EnvInteger True
+              ]
+         in checkScheme schemeEnvs `shouldBe` schemeEnvs
+
+    context "when there are duplicated env configs" $
+      it "should fail the check" $
+        let schemeEnvs =
+              [ Env "FOO" EnvBool True
+              , Env "BAR" EnvInteger True
+              , Env "FOO" EnvInteger True
+              ]
+            msg = "Duplicated env variable configuration in schema: FOO"
+         in evaluate (checkScheme schemeEnvs) `shouldThrow` errorCall msg
+
   describe "checkConfig" $
     context "when the envs have the correct type" $ do
       context "when the envs in the dotenvs are defined in the scheme" $ do
diff --git a/src/Configuration/Dotenv/Scheme.hs b/src/Configuration/Dotenv/Scheme.hs
--- a/src/Configuration/Dotenv/Scheme.hs
+++ b/src/Configuration/Dotenv/Scheme.hs
@@ -1,5 +1,6 @@
 module Configuration.Dotenv.Scheme
   ( checkConfig
+  , checkScheme
   , loadSafeFile
   , runSchemaChecker
   )
@@ -8,6 +9,7 @@
 import Control.Monad
 import Control.Monad.IO.Class (MonadIO(..))
 
+import Data.List
 import Data.Yaml (decodeFileEither, prettyPrintParseException)
 import Text.Megaparsec
 import System.Directory (doesFileExist)
@@ -27,7 +29,7 @@
   -> m [(String, String)]
 loadSafeFile schemaFile config = do
   envs <- loadFile config
-  liftIO (readScheme schemaFile >>= checkConfig envs)
+  liftIO (readScheme schemaFile >>= checkConfig envs . checkScheme)
   return envs
 
 readScheme :: FilePath -> IO [Env]
@@ -36,6 +38,19 @@
   case eitherEnvConf of
     Right envConfs -> return envConfs
     Left errorYaml -> error (prettyPrintParseException errorYaml)
+
+checkScheme :: [Env] -> [Env]
+checkScheme envConfs =
+  case duplicatedConfs of
+    []   -> envConfs
+    dups -> error (duplicatedConfErrorMsg $ uniqueConfs dups)
+  where
+    duplicatedConfs  = deleteFirstsBy confEquals envConfs (uniqueConfs envConfs)
+    uniqueConfs      = nubBy confEquals
+    a `confEquals` b = envName a == envName b
+
+duplicatedConfErrorMsg :: [Env] -> String
+duplicatedConfErrorMsg = ("Duplicated env variable configuration in schema: " ++) . showMissingDotenvs
 
 checkConfig
   :: [(String, String)]
diff --git a/src/Configuration/Dotenv/Scheme/Types.hs b/src/Configuration/Dotenv/Scheme/Types.hs
--- a/src/Configuration/Dotenv/Scheme/Types.hs
+++ b/src/Configuration/Dotenv/Scheme/Types.hs
@@ -13,7 +13,8 @@
 data EnvType =
   EnvInteger
     | EnvBool
-    | EnvText deriving (Show, Eq)
+    | EnvText
+    deriving (Show, Eq, Ord)
 
 instance FromJSON EnvType where
   parseJSON (String "integer") = pure EnvInteger
@@ -27,7 +28,7 @@
     { envName  :: String
     , envType  :: EnvType
     , required :: Bool
-    } deriving (Show, Eq)
+    } deriving (Show, Eq, Ord)
 
 instance FromJSON Env where
   parseJSON (Object m) =
