Skip to content
This repository has been archived by the owner on Sep 2, 2022. It is now read-only.

Deploying lower case boolean or string type in datamodel results in internal server error #3239

Closed
marktani opened this issue Oct 2, 2018 · 1 comment

Comments

@marktani
Copy link
Contributor

marktani commented Oct 2, 2018

Describe the bug
When you deploy a datamodel with a field of type boolean or string, you receive an internal server error, "No value found for 'boolean'" or "No value found for 'string'".

To Reproduce
Steps to reproduce the behavior:

  1. Deploy this datamodel:
type Email {
  id: ID! @unique
  email: String
  default: boolean @default(value: false)
}

Note boolean, and not Boolean.

  1. See error:
Creating stage dev for service lowercase-boolean ✔
Deploying service `lowercase-boolean` to stage `dev` to server `prisma-eu1` !

ERROR: Whoops. Looks like an internal server error. Search your server logs for request ID: eu1:management:cjmrx1638224c0b83am1m1dzi

{
  "data": {
    "deploy": null
  },
  "errors": [
    {
      "message": "Whoops. Looks like an internal server error. Search your server logs for request ID: eu1:management:cjmrx1638224c0b83am1m1dzi",
      "path": [
        "deploy"
      ],
      "locations": [
        {
          "line": 2,
          "column": 9
        }
      ],
      "requestId": "eu1:management:cjmrx1638224c0b83am1m1dzi"
    }
  ],
  "status": 200
}

Internal server error logs:

{
    "key": "error/unhandled",
    "requestId": "eu1:management:cjmrx1638224c0b83am1m1dzi",
    "payload": {
        "exception": "java.util.NoSuchElementException: No value found for 'boolean'",
        "query": "      mutation($name: String!, $stage: String! $types: String! $dryRun: Boolean $secrets: [String!], $subscriptions: [FunctionInput!], $force: Boolean) {\n        deploy(input: {\n          name: $name\n          stage: $stage\n          types: $types\n          dryRun: $dryRun\n          secrets: $secrets\n          subscriptions: $subscriptions\n          force: $force\n        }) {\n          errors {\n            type\n            field\n            description\n          }\n          warnings {\n            type\n            field\n            description\n          }\n          migration {\n            ...MigrationFragment\n          }\n        }\n      }\n      \nfragment MigrationFragment on Migration {\n  revision\n  steps {\n    type\n    __typename\n    ... on CreateEnum {\n      name\n      ce_values: values\n    }\n    ... on CreateField {\n      model\n      name\n      cf_typeName: typeName\n      cf_isRequired: isRequired\n      cf_isList: isList\n      cf_isUnique: unique\n      cf_relation: relation\n      cf_defaultValue: default\n      cf_enum: enum\n    }\n    ... on CreateModel {\n      name\n    }\n    ... on CreateRelation {\n      name\n      leftModel\n      rightModel\n    }\n    ... on DeleteEnum {\n      name\n    }\n    ... on DeleteField {\n      model\n      name\n    }\n    ... on DeleteModel {\n      name\n    }\n    ... on DeleteRelation {\n      name\n    }\n    ... on UpdateEnum {\n      name\n      newName\n      values\n    }\n    ... on UpdateField {\n      model\n      name\n      newName\n      typeName\n      isRequired\n      isList\n      isUnique: unique\n      relation\n      default\n      enum\n    }\n    ... on UpdateModel {\n      name\n      um_newName: newName\n    }\n  }\n}\n\n    ",
        "variables": "{\"name\":\"nilan-marktanner-7ea852~lowercase-boolean\",\"stage\":\"dev\",\"types\":\"type Email {\\n  id: ID! @unique\\n  email: String\\n  default: boolean @default(value: false)\\n}\\n\\n\",\"secrets\":null,\"subscriptions\":[]}",
        "code": "0",
        "stack_trace": "com.prisma.shared.models.TypeIdentifier$.$anonfun$withName$1(Field.scala:41)\\n scala.Option.getOrElse(Option.scala:121)\\n com.prisma.shared.models.TypeIdentifier$.withName(Field.scala:41)\\n com.prisma.deploy.migration.validation.SchemaSyntaxValidator.typeIdentifierForTypename(SchemaSyntaxValidator.scala:460)\\n com.prisma.deploy.migration.validation.SchemaSyntaxValidator.getDefaultValueFromField(SchemaSyntaxValidator.scala:399)\\n com.prisma.deploy.migration.validation.SchemaSyntaxValidator.hasInvalidType$1(SchemaSyntaxValidator.scala:373)\\n com.prisma.deploy.migration.validation.SchemaSyntaxValidator.ensureDefaultValuesHaveCorrectType$1(SchemaSyntaxValidator.scala:383)\\n com.prisma.deploy.migration.validation.SchemaSyntaxValidator.validateFieldDirectives(SchemaSyntaxValidator.scala:394)\\n com.prisma.deploy.migration.validation.SchemaSyntaxValidator.$anonfun$validateInternal$3(SchemaSyntaxValidator.scala:152)\\n scala.collection.TraversableLike.$anonfun$flatMap$1(TraversableLike.scala:241)\\n scala.collection.Iterator.foreach(Iterator.scala:929)\\n scala.collection.Iterator.foreach$(Iterator.scala:929)\\n scala.collection.AbstractIterator.foreach(Iterator.scala:1417)\\n scala.collection.IterableLike.foreach(IterableLike.scala:71)\\n scala.collection.IterableLike.foreach$(IterableLike.scala:70)\\n scala.collection.AbstractIterable.foreach(Iterable.scala:54)\\n scala.collection.TraversableLike.flatMap(TraversableLike.scala:241)\\n scala.collection.TraversableLike.flatMap$(TraversableLike.scala:238)\\n scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)\\n com.prisma.deploy.migration.validation.SchemaSyntaxValidator.validateInternal(SchemaSyntaxValidator.scala:152)\\n com.prisma.deploy.migration.validation.SchemaSyntaxValidator.validate(SchemaSyntaxValidator.scala:108)\\n com.prisma.deploy.migration.validation.SchemaSyntaxValidator.validateSyntax(SchemaSyntaxValidator.scala:99)\\n com.prisma.deploy.schema.mutations.DeployMutation.validateSyntax(DeployMutation.scala:73)\\n com.prisma.deploy.schema.mutations.DeployMutation.internalExecute(DeployMutation.scala:53)\\n com.prisma.deploy.schema.mutations.DeployMutation.execute(DeployMutation.scala:45)\\n com.prisma.deploy.schema.SchemaBuilderImpl.$anonfun$deployField$9(SchemaBuilder.scala:188)\\n scala.concurrent.Future.$anonfun$flatMap$1(Future.scala:302)\\n scala.concurrent.impl.Promise.$anonfun$transformWith$1(Promise.scala:37)\\n scala.concurrent.impl.CallbackRunnable.run(Promise.scala:60)\\n akka.dispatch.BatchingExecutor$AbstractBatch.processBatch(BatchingExecutor.scala:55)\\n akka.dispatch.BatchingExecutor$BlockableBatch.$anonfun$run$1(BatchingExecutor.scala:91)\\n scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)\\n scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:81)\\n akka.dispatch.BatchingExecutor$BlockableBatch.run(BatchingExecutor.scala:91)\\n akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:40)\\n akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:43)\\n akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)\\n akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)\\n akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)\\n akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)",
        "message": "No value found for 'boolean'"
    }
}

Expected behavior
deployment is interrupted, giving you an error message that boolean or string is not a valid type name. Did you mean Boolean or String?

Versions (please complete the following information):

  • prisma CLI: prisma/1.17.1 (darwin-x64) node-v10.8.0
  • Prisma Server: "1.18-beta-1

Additional context
Added to #2018.

@mavilein
Copy link
Contributor

Thanks for reporting the issue and your thorough description! 🙏 This has been fixed in 1.18.1.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants