diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1b35d19495163defe398a9e0413ab5cbaea0ba39..e4479048c681cba62a6e2891a0925feb587b370a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -17,6 +17,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ### Fixed ###
 
+* #43 - Error with `execute_query` when server doesn't support query caching.
+
 ### Security ###
 
 ## [0.5.0] - 2021-02-11 ##
diff --git a/src/caosdb/common/models.py b/src/caosdb/common/models.py
index 28911443392f76191ea0c7ca6c212a39d5d52184..9592e484654d3a610d5516cb7ca52c3df71682ba 100644
--- a/src/caosdb/common/models.py
+++ b/src/caosdb/common/models.py
@@ -3665,7 +3665,11 @@ class Query():
         if isinstance(q, etree._Element):
             self.q = q.get("string")
             self.results = int(q.get("results"))
-            self.cached = q.get("cached").lower() == "true"
+
+            if q.get("cached") is None:
+                self.cached = False
+            else:
+                self.cached = q.get("cached").lower() == "true"
 
             for m in q:
                 if m.tag.lower() == 'warning' or m.tag.lower() == 'error':
diff --git a/unittests/test_query.py b/unittests/test_query.py
new file mode 100644
index 0000000000000000000000000000000000000000..f4b3ee9762d9d76b65ace9a5b9b3f4039c0c6919
--- /dev/null
+++ b/unittests/test_query.py
@@ -0,0 +1,45 @@
+# -*- encoding: utf-8 -*-
+#
+# ** header v3.0
+# This file is a part of the CaosDB Project.
+#
+# Copyright (C) 2021 Indiscale GmbH <info@indiscale.com>
+# Copyright (C) 2021 Timm Fitschen <f.fitschen@indiscale.com>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+#
+# ** end header
+#
+from lxml import etree
+import caosdb as db
+
+
+def test_query_parsing():
+    s = '<Query string="FIND bla" results="0" cached="true"/>'
+    q = db.Query(etree.fromstring(s))
+    assert q.q == "FIND bla"
+    assert q.results == 0
+    assert q.cached is True
+
+    s = '<Query string="COUNT bla" results="1" cached="false"/>'
+    q = db.Query(etree.fromstring(s))
+    assert q.q == "COUNT bla"
+    assert q.results == 1
+    assert q.cached is False
+
+    s = '<Query string="COUNT blub" results="4"/>'
+    q = db.Query(etree.fromstring(s))
+    assert q.q == "COUNT blub"
+    assert q.results == 4
+    assert q.cached is False