prisma1 icon indicating copy to clipboard operation
prisma1 copied to clipboard

SyntaxError ';' expected

Open cramhead opened this issue 6 years ago • 10 comments

Describe the bug Introspection crashes while intespecting a MySQL database.

To Reproduce Steps to reproduce the behavior:

  1. prisma init hello-world
  2. Add configuration to connect to db
  3. Select existing data
  4. Choose Typescript or Javascript as programming language
  5. Outputs the error, but does generate files

Expected behavior Introspects without errors

Screenshots N/A

Versions (please complete the following information):

  • Connector: MySQL
  • Prisma Server: 1.33.0
  • prisma CLI: prisma/1.33.0 (darwin-x64) node-v11.14.0
  • OS: OS X Mojave
  • Table type: InnoDB
  • Table encoding: cp1252 West European (latin1)
  • Table collation: latin1_swedish_ci

Additional context

The table where the introspection fails is has only two columns, role_id and permission_id, both of type int. Oddly, there is no archived column in that table. There are archived columns on other tables. Also, there are 48tables in the database, but the introspection is stating that the are 63tables.

With enhanced debug mode set on the cli outputs the following

 prisma init hello-world
  command Failed to get the definition file +0ms
  command Error: Couldn’t find `prisma.yml` file. Are you in the right directory? +2ms
  init prisma init workflow called without existing directory. +0ms
  init Error: ENOENT: no such file or directory, scandir '/Users/bobo/Projects/Prisma/hello-world/' +1ms
  client Sending query to cloud api +0ms
  client https://api2.cloud.prisma.sh +0ms
  client {
  client       me {
  client         id
  client         name
  client         login {
  client           email
  client         }
  client       }
  client     } +0ms
  client undefined +0ms
  client { headers: {}, agent: undefined } +0ms
  endpoint-dialog EndpointDialog workflow called without existing directory. +1s
  endpoint-dialog Error: ENOENT: no such file or directory, scandir '/Users/bobo/Projects/Prisma/hello-world/' +0ms
? Set up a new Prisma server or deploy to an existing server? Use existing database
? What kind of database do you want to deploy to? MySQL
? Does your database contain existing data? Yes
? Enter database host 192.168.99.100
? Enter database port 30306
? Enter database user root
? Enter database password [hidden]

Introspecting database bobo... 1.1s
Created datamodel definition based on 63 tables.
  client Sending query to cluster custom +1m
  client http://localhost:4466/management +0ms
  client
  client       query($name: String! $stage: String!) {
  client         project(name: $name stage: $stage) {
  client           name
  client           stage
  client         }
  client       }
  client      +0ms
  client { name: 'default', stage: 'default' } +0ms
  client Sending query to cluster custom +1ms
  client http://localhost:4466/management +0ms
  client
  client       query($name: String! $stage: String!) {
  client         project(name: $name stage: $stage) {
  client           name
  client           stage
  client         }
  client       }
  client      +0ms
  client { name: 'default', stage: 'default' } +0ms
? Select the programming language for the generated Prisma client Prisma TypeScript Client
  init prisma init: writing docker-compose.yml +1m

Created 3 new files:

  prisma.yml           Prisma service definition
  datamodel.prisma    GraphQL SDL-based datamodel (foundation for database)
  docker-compose.yml   Docker configuration file

Next steps:

  1. Open folder: cd hello-world
  2. Start your Prisma server: docker-compose up -d
  3. Deploy your Prisma service: prisma deploy
  4. Read more about introspection:
     http://bit.ly/prisma-introspection
  init { isPackaged: false } +1ms
SyntaxError: ';' expected. (644:8)
  642 | export type RolePermissionOrderByInput =
  643 |
> 644 | export type UserOrderByInput =   'id_ASC' |
      |        ^
  645 |   'id_DESC' |
  646 |   'archived_ASC' |
  647 |   'archived_DESC' |
    at e (/Users/bobo/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prettier/parser-typescript.js:1:205)
    at Object.parse (/Users/bobo/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prettier/parser-typescript.js:1:2172485)
    at Object.parse$2 [as parse] (/Users/bobo/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prettier/index.js:10639:19)
    at coreFormat (/Users/bobo/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prettier/index.js:13856:23)
    at format (/Users/bobo/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prettier/index.js:14115:73)
    at formatWithCursor (/Users/bobo/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prettier/index.js:14131:12)
    at /Users/bobo/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prettier/index.js:42399:15
    at Object.format (/Users/bobo/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prettier/index.js:42418:12)
    at TypescriptGenerator.format (/Users/bobo/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prisma-client-lib/src/codegen/generators/typescript-client.ts:176:21)
    at TypescriptGenerator.render (/Users/bobo/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prisma-client-lib/src/codegen/generators/typescript-client.ts:204:17)
    at GenerateCommand.<anonymous> (/Users/bobo/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prisma-cli-core/src/commands/generate/generate.ts:196:28)
    at step (/Users/bobo/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prisma-cli-core/dist/commands/generate/generate.js:45:23)
    at Object.next (/Users/bobo/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prisma-cli-core/dist/commands/generate/generate.js:26:53)
    at /Users/bobo/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prisma-cli-core/dist/commands/generate/generate.js:20:71
    at new Promise (<anonymous>)
    at __awaiter (/Users/bobo/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prisma-cli-core/dist/commands/generate/generate.js:16:12)
    at GenerateCommand.generateTypescript (/Users/bobo/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prisma-cli-core/dist/commands/generate/generate.js:205:16)
    at GenerateCommand.<anonymous> (/Users/bobo/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prisma-cli-core/src/commands/generate/generate.ts:130:22)
    at step (/Users/bobo/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prisma-cli-core/dist/commands/generate/generate.js:45:23)
    at Object.next (/Users/bobo/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prisma-cli-core/dist/commands/generate/generate.js:26:53)
    at fulfilled (/Users/bobo/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prisma-cli-core/dist/commands/generate/generate.js:17:58)
2019-05-23T21:48:32.443Z output Exiting with code: 1


Generating schema... 188ms

cramhead avatar May 23 '19 22:05 cramhead

After converting the encoding to utf8 and changing the archived columns to be int from tinyint. I get the same error, but the call stack shows a timeout.

SyntaxError: ';' expected. (644:8)
  642 | export type RolePermissionOrderByInput =
  643 |
> 644 | export type UserOrderByInput =   'id_ASC' |
      |        ^
  645 |   'id_DESC' |
  646 |   'archived_ASC' |
  647 |   'archived_DESC' |
    at e (/Users/bob/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prettier/parser-typescript.js:1:205)
    at Object.parse (/Users/bob/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prettier/parser-typescript.js:1:2172485)
    at Object.parse$2 [as parse] (/Users/bob/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prettier/index.js:10639:19)
    at coreFormat (/Users/bob/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prettier/index.js:13856:23)
    at format (/Users/bob/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prettier/index.js:14115:73)
    at formatWithCursor (/Users/bob/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prettier/index.js:14131:12)
    at /Users/bob/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prettier/index.js:42399:15
    at Object.format (/Users/bob/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prettier/index.js:42418:12)
    at TypescriptGenerator.format (/Users/bob/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prisma-client-lib/src/codegen/generators/typescript-client.ts:176:21)
    at TypescriptGenerator.render (/Users/bob/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prisma-client-lib/src/codegen/generators/typescript-client.ts:204:17)
    at GenerateCommand.<anonymous> (/Users/bob/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prisma-cli-core/src/commands/generate/generate.ts:196:28)
    at step (/Users/bob/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prisma-cli-core/dist/commands/generate/generate.js:45:23)
    at Object.next (/Users/bob/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prisma-cli-core/dist/commands/generate/generate.js:26:53)
    at /Users/bob/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prisma-cli-core/dist/commands/generate/generate.js:20:71
    at new Promise (<anonymous>)
    at __awaiter (/Users/bob/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prisma-cli-core/dist/commands/generate/generate.js:16:12)
    at GenerateCommand.generateTypescript (/Users/bob/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prisma-cli-core/dist/commands/generate/generate.js:205:16)
    at GenerateCommand.<anonymous> (/Users/bob/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prisma-cli-core/src/commands/generate/generate.ts:130:22)
    at step (/Users/bob/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prisma-cli-core/dist/commands/generate/generate.js:45:23)
    at Object.next (/Users/bob/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prisma-cli-core/dist/commands/generate/generate.js:26:53)
    at fulfilled (/Users/bob/.nvm/versions/node/v11.14.0/lib/node_modules/prisma/node_modules/prisma-cli-core/dist/commands/generate/generate.js:17:58)
2019-05-23T22:57:36.611Z util timed out
2019-05-23T22:57:36.611Z output Exiting with code: 0

cramhead avatar May 23 '19 23:05 cramhead

I found the same problem

Tinkle avatar May 26 '19 02:05 Tinkle

Same problem!

matiasmenker avatar Aug 06 '19 18:08 matiasmenker

Same versions of Prisma?

cramhead avatar Aug 06 '19 19:08 cramhead

Yes!

matiasmenker avatar Aug 13 '19 15:08 matiasmenker

anyone know how i can fix this issue?

ivan-jorge001 avatar Aug 25 '19 14:08 ivan-jorge001

Resolved this by defining databaseType in prisma.yml. In my case, I'm using Mongo.

# The endpoint of your Prisma API (deployed to a Prisma Sandbox).
endpoint: ${env:PRISMA_ENDPOINT}

# The file containing the definition of your data model.
datamodel:
  - datamodel/users.prisma
  - datamodel/school.prisma
  - datamodel/member.prisma
  - datamodel/group.prisma
  - datamodel/curriculum.prisma
  - datamodel/pillar.prisma
  - datamodel/question.prisma
  - datamodel/scheduler.prisma
  - datamodel/userCurriculum.prisma
  - datamodel/userPillar.prisma
  - datamodel/personalSurvey.prisma
  - datamodel/score.prisma
  - datamodel/survey.prisma
  - datamodel/surveyGroup.prisma
  - datamodel/wblibrary.prisma
  - datamodel/otp.prisma

# Specifies the type of the database
databaseType: document

# Generate
generate:
  - generator: typescript-client
    output: ../src/generated/prisma-client/
  - generator: graphql-schema
    output: ../src/generated/prisma.graphql

hooks:
  post-deploy:
    - npx nexus-prisma-generate --client ./src/generated/prisma-client --output ./src/generated/nexus-prisma # Runs the codegen tool from nexus-prisma.

secret: ${env:PRISMA_SECRET}

Dev-Dipesh avatar Sep 03 '19 19:09 Dev-Dipesh

Resolved this by defining databaseType in prisma.yml. In my case, I'm using Mongo.

# The endpoint of your Prisma API (deployed to a Prisma Sandbox).
endpoint: ${env:PRISMA_ENDPOINT}

# The file containing the definition of your data model.
datamodel:
  - datamodel/users.prisma
  - datamodel/school.prisma
  - datamodel/member.prisma
  - datamodel/group.prisma
  - datamodel/curriculum.prisma
  - datamodel/pillar.prisma
  - datamodel/question.prisma
  - datamodel/scheduler.prisma
  - datamodel/userCurriculum.prisma
  - datamodel/userPillar.prisma
  - datamodel/personalSurvey.prisma
  - datamodel/score.prisma
  - datamodel/survey.prisma
  - datamodel/surveyGroup.prisma
  - datamodel/wblibrary.prisma
  - datamodel/otp.prisma

# Specifies the type of the database
databaseType: document

# Generate
generate:
  - generator: typescript-client
    output: ../src/generated/prisma-client/
  - generator: graphql-schema
    output: ../src/generated/prisma.graphql

hooks:
  post-deploy:
    - npx nexus-prisma-generate --client ./src/generated/prisma-client --output ./src/generated/nexus-prisma # Runs the codegen tool from nexus-prisma.

secret: ${env:PRISMA_SECRET}

this solved the issue for me as well! very odd that this is not automatically set when using mongo db connector

macrozone avatar Jan 30 '20 10:01 macrozone

error message

SyntaxError: ';' expected. (125:8)
  123 | export type UserSettingsOrderByInput = 
  124 | 
> 125 | export type NewsOrderByInput =   'title_ASC' |
      |        ^
  126 |   'title_DESC' |
  127 |   'content_ASC' |
  128 |   'content_DESC' |
    at e (/snapshot/cli/node_modules/prisma-client-lib/node_modules/prettier/parser-typescript.js:1:267)
    at Object.parse (/snapshot/cli/node_modules/prisma-client-lib/node_modules/prettier/parser-typescript.js:1:2172547)
    at Object.parse$2 [as parse] (/snapshot/cli/node_modules/prisma-client-lib/node_modules/prettier/index.js:10639:19)
    at coreFormat (/snapshot/cli/node_modules/prisma-client-lib/node_modules/prettier/index.js:13856:23)
    at format (/snapshot/cli/node_modules/prisma-client-lib/node_modules/prettier/index.js:14115:73)
    at formatWithCursor (/snapshot/cli/node_modules/prisma-client-lib/node_modules/prettier/index.js:14131:12)
    at /snapshot/cli/node_modules/prisma-client-lib/node_modules/prettier/index.js:42399:15
    at Object.format (/snapshot/cli/node_modules/prisma-client-lib/node_modules/prettier/index.js:42418:12)
    at TypescriptGenerator.format (/snapshot/cli/node_modules/prisma-client-lib/src/codegen/generators/typescript-client.ts:176:21)
    at TypescriptGenerator.render (/snapshot/cli/node_modules/prisma-client-lib/src/codegen/generators/typescript-client.ts:204:17)
    at GenerateCommand.<anonymous> (/snapshot/cli/node_modules/prisma-cli-core/src/commands/generate/generate.ts:196:28)
    at step (/snapshot/cli/node_modules/prisma-cli-core/dist/commands/generate/generate.js:45:23)
    at Object.f [as next] (/snapshot/cli/node_modules/prisma-cli-core/dist/commands/generate/generate.js:26:53)
    at __awaiter (/snapshot/cli/node_modules/prisma-cli-core/dist/commands/generate/generate.js:20:71)
    at new Promise (<anonymous>)
    at __awaiter (/snapshot/cli/node_modules/prisma-cli-core/dist/commands/generate/generate.js:16:12)
    at GenerateCommand.generateTypescript (/snapshot/cli/node_modules/prisma-cli-core/dist/commands/generate/generate.js:205:16)
    at GenerateCommand.<anonymous> (/snapshot/cli/node_modules/prisma-cli-core/src/commands/generate/generate.ts:130:22)
    at step (/snapshot/cli/node_modules/prisma-cli-core/dist/commands/generate/generate.js:45:23)
    at Object.f [as next] (/snapshot/cli/node_modules/prisma-cli-core/dist/commands/generate/generate.js:26:53)
    at fulfilled (/snapshot/cli/node_modules/prisma-cli-core/dist/commands/generate/generate.js:17:58)
  output Exiting with code: 1 +0ms

prisma.yml

endpoint: http://localhost:4466
datamodel: datamodel.graphql
databaseType: document
generate:
  - generator: typescript-client
    output: ../src/generated/prisma-client/
  - generator: graphql-schema
    output: ../src/generated/schema.graphql

datamodel.graqhql

type User {
  id: ID! @id
  name: String!
  token: String @unique
  robot: Boolean
  settings: UserSettings
}

type UserSettings{
  favoriteNews: [News]
}

type News{
  title: String!
  content: String!
  provider: String
  time: DateTime!
  crawlingAt: DateTime! @createdAt
  source: ContentSource! @default(value:NAVER)
}

type NewsMeta @embedded{
  summary: String
  subject: String
  group: NewsGroup
  spamMarks: [SpamMark]
  category: NewsCategory
  categories: [NewsCategory]
  tags: [String]
  updateTransactions: [UpdateTransaction]
}

type NewsGroup{
  subject: String
  time: DateTime
  createdBy: User
  news: [News]
}

type UpdateTransaction{
  operation: UpdateTransactionOperation
}

type SpamMark @embedded{
  by: User
  at: DateTime @createdAt
  spam: Boolean
  reason: String
}


enum UpdateTransactionOperation{
  REPLACED_SOURCE
  INDEXED
  ANALYZED
  ELSE
}


enum ContentSource {
  EBEST
  NAVER
  ELSE
}

enum NewsCategory{
  WEATHER
  UNCATEGORIZED
}

still same issue with databaseType: document

softmarshmallow avatar Mar 20 '20 08:03 softmarshmallow

error message

SyntaxError: ';' expected. (125:8)
  123 | export type UserSettingsOrderByInput = 
  124 | 
> 125 | export type NewsOrderByInput =   'title_ASC' |
      |        ^
  126 |   'title_DESC' |
  127 |   'content_ASC' |
  128 |   'content_DESC' |
    at e (/snapshot/cli/node_modules/prisma-client-lib/node_modules/prettier/parser-typescript.js:1:267)
    at Object.parse (/snapshot/cli/node_modules/prisma-client-lib/node_modules/prettier/parser-typescript.js:1:2172547)
    at Object.parse$2 [as parse] (/snapshot/cli/node_modules/prisma-client-lib/node_modules/prettier/index.js:10639:19)
    at coreFormat (/snapshot/cli/node_modules/prisma-client-lib/node_modules/prettier/index.js:13856:23)
    at format (/snapshot/cli/node_modules/prisma-client-lib/node_modules/prettier/index.js:14115:73)
    at formatWithCursor (/snapshot/cli/node_modules/prisma-client-lib/node_modules/prettier/index.js:14131:12)
    at /snapshot/cli/node_modules/prisma-client-lib/node_modules/prettier/index.js:42399:15
    at Object.format (/snapshot/cli/node_modules/prisma-client-lib/node_modules/prettier/index.js:42418:12)
    at TypescriptGenerator.format (/snapshot/cli/node_modules/prisma-client-lib/src/codegen/generators/typescript-client.ts:176:21)
    at TypescriptGenerator.render (/snapshot/cli/node_modules/prisma-client-lib/src/codegen/generators/typescript-client.ts:204:17)
    at GenerateCommand.<anonymous> (/snapshot/cli/node_modules/prisma-cli-core/src/commands/generate/generate.ts:196:28)
    at step (/snapshot/cli/node_modules/prisma-cli-core/dist/commands/generate/generate.js:45:23)
    at Object.f [as next] (/snapshot/cli/node_modules/prisma-cli-core/dist/commands/generate/generate.js:26:53)
    at __awaiter (/snapshot/cli/node_modules/prisma-cli-core/dist/commands/generate/generate.js:20:71)
    at new Promise (<anonymous>)
    at __awaiter (/snapshot/cli/node_modules/prisma-cli-core/dist/commands/generate/generate.js:16:12)
    at GenerateCommand.generateTypescript (/snapshot/cli/node_modules/prisma-cli-core/dist/commands/generate/generate.js:205:16)
    at GenerateCommand.<anonymous> (/snapshot/cli/node_modules/prisma-cli-core/src/commands/generate/generate.ts:130:22)
    at step (/snapshot/cli/node_modules/prisma-cli-core/dist/commands/generate/generate.js:45:23)
    at Object.f [as next] (/snapshot/cli/node_modules/prisma-cli-core/dist/commands/generate/generate.js:26:53)
    at fulfilled (/snapshot/cli/node_modules/prisma-cli-core/dist/commands/generate/generate.js:17:58)
  output Exiting with code: 1 +0ms

prisma.yml

endpoint: http://localhost:4466
datamodel: datamodel.graphql
databaseType: document
generate:
  - generator: typescript-client
    output: ../src/generated/prisma-client/
  - generator: graphql-schema
    output: ../src/generated/schema.graphql

datamodel.graqhql

type User {
  id: ID! @id
  name: String!
  token: String @unique
  robot: Boolean
  settings: UserSettings
}

type UserSettings{
  favoriteNews: [News]
}

type News{
  title: String!
  content: String!
  provider: String
  time: DateTime!
  crawlingAt: DateTime! @createdAt
  source: ContentSource! @default(value:NAVER)
}

type NewsMeta @embedded{
  summary: String
  subject: String
  group: NewsGroup
  spamMarks: [SpamMark]
  category: NewsCategory
  categories: [NewsCategory]
  tags: [String]
  updateTransactions: [UpdateTransaction]
}

type NewsGroup{
  subject: String
  time: DateTime
  createdBy: User
  news: [News]
}

type UpdateTransaction{
  operation: UpdateTransactionOperation
}

type SpamMark @embedded{
  by: User
  at: DateTime @createdAt
  spam: Boolean
  reason: String
}


enum UpdateTransactionOperation{
  REPLACED_SOURCE
  INDEXED
  ANALYZED
  ELSE
}


enum ContentSource {
  EBEST
  NAVER
  ELSE
}

enum NewsCategory{
  WEATHER
  UNCATEGORIZED
}

still same issue with databaseType: document

problem was not having id: ID! @id to type models

https://github.com/prisma/prisma/issues/4837

softmarshmallow avatar Mar 20 '20 08:03 softmarshmallow