loopbackio / loopbackio/loopback-connector-postgresql
Incremental migration does not configure existing PK column to enable auto-generated values
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- JavaScript
- Sterne
- 118
- Forks
- 184
- Ø Merge
- 1 T. 22 Std.
- Gemergte PRs (30 T.)
- 5
Beschreibung
Description/Steps to reproduce
From my testing using LoopBack 4 and this connector, the migration performed by npm run migrate does not configure the id (primary key) column to be auto-generated when generated: true is enabled on the property.
Link to reproduction sandbox
I've set up a branch on my loopback-next fork with a recreate. The branch is here:
https://github.com/aharbis/loopback-next/tree/postgres-pk-auto-gen
The recreate uses the todo application. There are two commits on the branch:
https://github.com/aharbis/loopback-next/commit/cdee3cb60305a02e5e1e5a49069e043079615289 - Adds the Postgres data source
https://github.com/aharbis/loopback-next/commit/43368cc4687521f06a79102b6484494cda6e27be - Sets generated: true on todo model
Steps to recreate
- Checkout first commit (that adds the datasource)
- Install dependencies (
npm i) - Run migration (
npm run migrate) - Start app (
npm start) - Try to create todo with ID, to confirm this works
- Stop app
- Checkout second commit (that sets
generated: true) - Run migration (
npm run migrate) - Start app (
npm start) - Try to create todo without ID
Expected result
In step 10, this create should succeed and the ID should be auto-generated.
Actual result
In step 10, this create yields a 500 error:
Unhandled error in POST /todos: 500 error: null value in column "id" violates not-null constraint
at Connection.parseE (/Users/aharbis/git/loopback-next/examples/todo/node_modules/pg/lib/connection.js:602:11)
at Connection.parseMessage (/Users/aharbis/git/loopback-next/examples/todo/node_modules/pg/lib/connection.js:399:19)
at Socket.<anonymous> (/Users/aharbis/git/loopback-next/examples/todo/node_modules/pg/lib/connection.js:121:22)
at emitOne (events.js:116:13)
at Socket.emit (events.js:211:7)
at addChunk (_stream_readable.js:263:12)
at readableAddChunk (_stream_readable.js:250:11)
at Socket.Readable.push (_stream_readable.js:208:10)
at TCP.onread (net.js:601:20)
Additional information
$ node -e 'console.log(process.platform, process.arch, process.versions.node)'
darwin x64 8.12.0
$ npm ls --prod --depth 0 | grep loopback
@loopback/example-todo@1.6.2 /Users/aharbis/git/loopback-next/examples/todo
├── @loopback/boot@1.4.1
├── @loopback/context@1.19.1
├── @loopback/core@1.8.2
├── @loopback/openapi-v3@1.6.2
├── @loopback/openapi-v3-types@1.1.2
├── @loopback/repository@1.7.0
├── @loopback/rest@1.16.0
├── @loopback/rest-explorer@1.2.2
├── @loopback/service-proxy@1.2.2
├── loopback-connector-postgresql@3.6.1
└── loopback-connector-rest@3.4.1
$ psql --version
psql (PostgreSQL) 10.5
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Reproduziere das Problem in der loopback-next-Todo-Anwendung mit dem verlinkten Branch postgres-pk-auto-gen und seinen beiden Commits. Führe npm migrate vor und nach dem Aktivieren von generated: true aus und bestätige anschließend, ob das Erstellen eines Todos ohne ID erfolgreich ist und die ID automatisch generiert wird.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- javascript, node.js, postgresql
- Bereich
- backend, database
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100