prisma / prisma-client-js

Type-safe database client for TypeScript & Node.js (ORM replacement)
Apache License 2.0
1.47k stars 67 forks source link

Some schemas return `PANIC: Unable to resolve a primary identifier for model MODELNAME` on `prisma.model.findMany({})` #529

Closed Jolg42 closed 4 years ago

Jolg42 commented 4 years ago

Schemas

Reproduction

Jolg42 commented 4 years ago

Examples

/home/runner/work/introspection-engine-output/introspection-engine-output/clients/mysql_public/dotclear
17 models
- dotc_blog findMany({}) Error: 
Invalid `prisma.dotc_blogs.findMany()` invocation in
/home/runner/work/introspection-engine-output/introspection-engine-output/clients/mysql_public/dotclear/index.js:630:34

PANIC: Unable to resolve a primary identifier for model dotc_setting.
- dotc_category findMany({}) Error: 
Invalid `prisma.dotc_categories.findMany()` invocation in
/home/runner/work/introspection-engine-output/introspection-engine-output/clients/mysql_public/dotclear/index.js:953:38

PANIC: Unable to resolve a primary identifier for model dotc_setting.
- dotc_comment findMany({}) Error: 
Invalid `prisma.dotc_comments.findMany()` invocation in
/home/runner/work/introspection-engine-output/introspection-engine-output/clients/mysql_public/dotclear/index.js:1236:37

PANIC: Unable to resolve a primary identifier for model dotc_setting.
- dotc_link findMany({}) Error: 
Invalid `prisma.dotc_links.findMany()` invocation in
/home/runner/work/introspection-engine-output/introspection-engine-output/clients/mysql_public/dotclear/index.js:1511:34

PANIC: Unable to resolve a primary identifier for model dotc_setting.
- dotc_log findMany({}) Error: 
Invalid `prisma.dotc_logs.findMany()` invocation in
/home/runner/work/introspection-engine-output/introspection-engine-output/clients/mysql_public/dotclear/index.js:1786:33

PANIC: Unable to resolve a primary identifier for model dotc_setting.
- dotc_media findMany({}) Error: 
Invalid `prisma.dotc_medias.findMany()` invocation in
/home/runner/work/introspection-engine-output/introspection-engine-output/clients/mysql_public/dotclear/index.js:2061:35

PANIC: Unable to resolve a primary identifier for model dotc_setting.
- dotc_meta findMany({}) Error: 
Invalid `prisma.dotc_metas.findMany()` invocation in
/home/runner/work/introspection-engine-output/introspection-engine-output/clients/mysql_public/dotclear/index.js:2336:34

PANIC: Unable to resolve a primary identifier for model dotc_setting.
- dotc_permissions findMany({}) Error: 
Invalid `prisma.dotc_permissions.findMany()` invocation in
/home/runner/work/introspection-engine-output/introspection-engine-output/clients/mysql_public/dotclear/index.js:2604:41

PANIC: Unable to resolve a primary identifier for model dotc_setting.
- dotc_ping findMany({}) Error: 
Invalid `prisma.dotc_pings.findMany()` invocation in
/home/runner/work/introspection-engine-output/introspection-engine-output/clients/mysql_public/dotclear/index.js:2872:34

PANIC: Unable to resolve a primary identifier for model dotc_setting.
- dotc_post findMany({}) Error: 
Invalid `prisma.dotc_posts.findMany()` invocation in
/home/runner/work/introspection-engine-output/introspection-engine-output/clients/mysql_public/dotclear/index.js:3140:34

PANIC: Unable to resolve a primary identifier for model dotc_setting.
- dotc_post_media findMany({}) Error: 
Invalid `prisma.dotc_post_medias.findMany()` invocation in
/home/runner/work/introspection-engine-output/introspection-engine-output/clients/mysql_public/dotclear/index.js:3439:40

PANIC: Unable to resolve a primary identifier for model dotc_setting.
- dotc_pref findMany({}) Error: 
Invalid `prisma.dotc_prefs.findMany()` invocation in
/home/runner/work/introspection-engine-output/introspection-engine-output/clients/mysql_public/dotclear/index.js:3707:34

PANIC: Unable to resolve a primary identifier for model dotc_setting.
- dotc_session findMany({}) Error: 
Invalid `prisma.dotc_sessions.findMany()` invocation in
/home/runner/work/introspection-engine-output/introspection-engine-output/clients/mysql_public/dotclear/index.js:3982:37

PANIC: Unable to resolve a primary identifier for model dotc_setting.
- dotc_setting findMany({}) Error: 
Invalid `prisma.dotc_settings.findMany()` invocation in
/home/runner/work/introspection-engine-output/introspection-engine-output/clients/mysql_public/dotclear/index.js:4250:37

PANIC: Unable to resolve a primary identifier for model dotc_setting.
- dotc_spamrule findMany({}) Error: 
Invalid `prisma.dotc_spamrules.findMany()` invocation in
/home/runner/work/introspection-engine-output/introspection-engine-output/clients/mysql_public/dotclear/index.js:4525:38

PANIC: Unable to resolve a primary identifier for model dotc_setting.
- dotc_user findMany({}) Error: 
Invalid `prisma.dotc_users.findMany()` invocation in
/home/runner/work/introspection-engine-output/introspection-engine-output/clients/mysql_public/dotclear/index.js:4800:34

PANIC: Unable to resolve a primary identifier for model dotc_setting.
- dotc_version findMany({}) Error: 
Invalid `prisma.dotc_versions.findMany()` invocation in
/home/runner/work/introspection-engine-output/introspection-engine-output/clients/mysql_public/dotclear/index.js:5099:37

PANIC: Unable to resolve a primary identifier for model dotc_setting.
Error in Prisma Client:
PANIC: Unable to resolve a primary identifier for model dotc_setting. in
src/libcore/option.rs:1188:5

This is a non-recoverable error which probably happens when the Prisma Query Engine has a panic.
Please create an issue in https://github.com/prisma/prisma-client-js describing the last Prisma Client query you called.

https://github.com/prisma/introspection-engine-output/blob/query-generator-alpha-clean/clients/results/mysql_public_dotclear_stderr.log https://github.com/prisma/introspection-engine-output/blob/query-generator-alpha-clean/clients/results/mysql_public_nextcloud_stderr.log https://github.com/prisma/introspection-engine-output/blob/query-generator-alpha-clean/clients/results/mysql_public_piwigo_stderr.log

janpio commented 4 years ago

Example schema: https://github.com/prisma/introspection-engine-output/blob/query-generator-alpha-clean/mysql_public/dotclear.log

Mentioned model:

model dotc_setting {
  setting_id    String
  setting_label String?
  setting_ns    String     @default("system")
  setting_type  String     @default("string")
  setting_value String?
  blog_id       dotc_blog?

  @@index([blog_id], name: "dotc_idx_setting_blog_id")
  @@unique([setting_ns, setting_id, blog_id], name: "dotc_uk_setting")
}

The model indeed does not have an @id or @@id. But shouldn't the @unique be enough per latest AUMFIDARR merges?

dpetrick commented 4 years ago

Relation fields as part of the primary identifier of a model (doesn't matter if compound unique or @@id) are disallowed at the moment.

janpio commented 4 years ago

This should now be implemented, and the errors should be gone - confirming.

divyenduz commented 4 years ago

Still exists on 935, via https://github.com/prisma/introspection-engine-output/pull/230

Example: https://github.com/prisma/introspection-engine-output/blob/265770a10f64c72a0b14379261b2b79dd423c732/clients/results/mariadb_nextcloud_stderr.log#L2076

TODO: Make a minimal reproduction!

divyenduz commented 4 years ago

Minimal reproduction: https://github.com/prisma/prisma-client-js/issues/587

janpio commented 4 years ago

This will be avoided via https://github.com/prisma/prisma2/issues/1880 in the near future.

janpio commented 4 years ago

Closing this in favor of https://github.com/prisma/prisma-client-js/issues/587, they represent the same thing.