diff --git a/src/idl_parser.cpp b/src/idl_parser.cpp
index e89a39151bf4075a4af206ae6da1c6f8833d1cab..97eb426b4ddf62ef5332201679cb72df4629f395 100644
--- a/src/idl_parser.cpp
+++ b/src/idl_parser.cpp
@@ -648,8 +648,9 @@ CheckedError Parser::ParseField(StructDef &struct_def) {
 
   if (token_ == '=') {
     NEXT();
-    if (!IsScalar(type.base_type))
-      return Error("default values currently only supported for scalars");
+    if (!IsScalar(type.base_type) || struct_def.fixed)
+      return Error(
+            "default values currently only supported for scalars in tables");
     ECHECK(ParseSingleValue(field->value));
   }
   if (IsFloat(field->value.type.base_type)) {