payloadcms / payloadcms/payload
Payload creates too long names/identifiers for postgress
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 44.8k
- Forks
- 4.2k
- Avg merge
- 2d 21h
- Merged PRs (30d)
- 53
Description
Describe the Bug
Given I use payload with a postgress database
When combining features like nested arrays, localization and versioning
Then payload creates too long index and table names like _users_v_version_ingredient_sections_section_ingredients_locale_idx
Then Postgress like Neon with Vercel then truncates this to use only the first 63 chars
And that creates all sorts of problems (I assume)
On my end this surfaced when I removed some of the features that created the long index
Thereby creating a migration dropping the index and altering tables
Which postgress takes only 63 chars of thereby failing.
Link to the code that reproduces this issue
https://github.com/Xiphe/payload-long-index-names
Reproduction Steps
- Check out the repo 👆
- Run
pnpm install - Connect with a postgress db
- Run
pnpm payload migrate - See this error
pnpm payload migrate
> postgress-id-limit@1.0.0 payload [...]/postgress-id-limit
> cross-env NODE_OPTIONS=--no-deprecation payload migrate
[20:43:29] WARN: No email adapter provided. Email will be written to console. More info at https://payloadcms.com/docs/email/overview.
[20:43:29] INFO: Reading migration files from [...]/postgress-id-limit/src/migrations
[20:43:29] INFO: Migrating: 20250412_183931
[20:43:29] ERROR: Error running migration 20250412_183931 relation "_users_v_version_ingredient_sections_section_ingredients_locale" does not exist.
err: {
"type": "DatabaseError",
"message": "relation \"_users_v_version_ingredient_sections_section_ingredients_locale\" does not exist",
"stack":
error: relation "_users_v_version_ingredient_sections_section_ingredients_locale" does not exist
at [...]/postgress-id-limit/node_modules/.pnpm/pg@8.11.3/node_modules/pg/lib/client.js:526:17
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at Object.up ([...]/postgress-id-limit/src/migrations/20250412_183931.ts:4:3)
at runMigrationFile ([...]/postgress-id-limit/node_modules/.pnpm/@payloadcms+drizzle@3.33.0_@types+pg@8.10.2_@types+react@19.1.0_payload@3.33.0_graphql@_0a75b007319f798981d7c38cf55f021d/node_modules/@payloadcms/drizzle/src/migrate.ts:96:5)
at Object.migrate ([...]/postgress-id-limit/node_modules/.pnpm/@payloadcms+drizzle@3.33.0_@types+pg@8.10.2_@types+react@19.1.0_payload@3.33.0_graphql@_0a75b007319f798981d7c38cf55f021d/node_modules/@payloadcms/drizzle/src/migrate.ts:83:5)
at migrate ([...]/postgress-id-limit/node_modules/.pnpm/payload@3.33.0_graphql@16.10.0_typescript@5.7.3/node_modules/payload/src/bin/migrate.ts:87:7)
at async start (file://[...]/postgress-id-limit/node_modules/.pnpm/payload@3.33.0_graphql@16.10.0_typescript@5.7.3/node_modules/payload/bin.js:30:7)
"length": 562,
"name": "error",
"severity": "ERROR",
"code": "42P01",
"where": "SQL statement \"ALTER TABLE \"_users_v_version_ingredient_sections_section_ingredients_locales\" ADD CONSTRAINT \"_users_v_version_ingredient_sections_section_ingredients_locales_parent_id_fk\" FOREIGN KEY (\"_parent_id\") REFERENCES \"public\".\"_users_v_version_ingredient_sections_section_ingredients\"(\"id\") ON DELETE cascade ON UPDATE no action\"\nPL/pgSQL function inline_code_block line 2 at SQL statement",
"file": "namespace.c",
"line": "636",
"routine": "RangeVarGetRelidExtended"
}
ELIFECYCLE Command failed with exit code 1.
Which area(s) are affected? (Select all that apply)
db-postgres
Environment Info
Binaries:
Node: 20.11.0
npm: 10.2.4
Yarn: N/A
pnpm: 10.4.1
Relevant Packages:
payload: 3.33.0
next: 15.3.0
@payloadcms/db-postgres: 3.33.0
@payloadcms/email-nodemailer: 3.33.0
@payloadcms/graphql: 3.33.0
@payloadcms/next/utilities: 3.33.0
@payloadcms/payload-cloud: 3.33.0
@payloadcms/richtext-lexical: 3.33.0
@payloadcms/translations: 3.33.0
@payloadcms/ui/shared: 3.33.0
react: 19.1.0
react-dom: 19.1.0
Operating System:
Platform: darwin
Arch: arm64
Version: Darwin Kernel Version 24.1.0: Thu Oct 10 21:03:15 PDT 2024; root:xnu-11215.41.3~2/RELEASE_ARM64_T6000
Available memory (MB): 32768
Available CPU cores: 10
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by checking out the linked reproduction repository, running pnpm install, connecting a PostgreSQL database, and running pnpm payload migrate. Inspect src/migrations/20250412_183931.ts alongside the generated index and table names shown in the report. Done means the migration completes without relation errors when PostgreSQL's 63-character identifier limit is involved.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- postgresql, typescript
- Domain
- backend, databases
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100