Incremental migration does not configure existing PK column to enable auto-generated values
まだ誰も着手していません。
評価
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 初心者へのやさしさ
- 45/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
- 技術スタック
- javascript, node.js, postgresql
調査の方向性
リンクされている postgres-pk-auto-gen ブランチとその2つのコミットを使用して、loopback-next todo アプリケーションで問題を再現してください。generated: true を有効にする前後に npm migrate を実行し、ID なしで todo を作成できること、および ID が自動生成されることを確認してください。
索引モデルが issue の本文から書いたものです。
説明
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/[email protected] /Users/aharbis/git/loopback-next/examples/todo
├── @loopback/[email protected]
├── @loopback/[email protected]
├── @loopback/[email protected]
├── @loopback/[email protected]
├── @loopback/[email protected]
├── @loopback/[email protected]
├── @loopback/[email protected]
├── @loopback/[email protected]
├── @loopback/[email protected]
├── [email protected]
└── [email protected]
$ psql --version
psql (PostgreSQL) 10.5
- 主要言語
- JavaScript
- スター
- 118
- フォーク
- 184
- 平均マージ
- 1日 18時間
- マージ済み PR(30日)
- 7
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
loopbackio/loopback-connector-postgresql のほかの issue
-
Partial JSON Updateオープンfeature
難易度 5/5 1週間以上 初心者へのやさしさ 20/100
-
bug
難易度 4/5 3〜5日 初心者へのやさしさ 30/100
loopbackio/loopback-connector-postgresql#748 · コメント 1 件 ·
-
bug
難易度 3/5 1〜2日 初心者へのやさしさ 38/100
-
bug
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 45/100
loopbackio/loopback-connector-postgresql#732 · コメント 1 件 ·
loopbackio/loopback-connector-postgresql の issue をすべて見る
似ている issue
-
[Feature]:オープンenhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 73/100
Uuriko/project-room#1554 ·
メンテナーはふだん 1 日以内に返信
-
automated issue report
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
lirantal/discoprint#36 ·
メンテナーはふだん 1 日以内に返信
-
accepting PR Content:HTML
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
mdn/content#45988 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信