質問編集履歴
5
.
title
CHANGED
File without changes
|
body
CHANGED
@@ -89,7 +89,7 @@
|
|
89
89
|
[シーケンスの値を変更をするには](http://www.ksknet.net/postgresql/post_34.html)
|
90
90
|
|
91
91
|
```
|
92
|
-
SELECT
|
92
|
+
SELECT setval('test_master_test_id_seq', (SELECT MAX(test_id) FROM test_master));
|
93
93
|
```
|
94
94
|
|
95
95
|
↓
|
4
解決
title
CHANGED
File without changes
|
body
CHANGED
@@ -81,4 +81,39 @@
|
|
81
81
|
|
82
82
|
[Django-モデルのプライマリキーをUUIDにする](https://hodalog.com/from-id-to-uuid-django-model/)
|
83
83
|
|
84
|
-
シーケンス・・・?と思ってDBを見てみれば確かに自動採番するときにシーケンスの次の番号を入れようとしてるらしい。
|
84
|
+
シーケンス・・・?と思ってDBを見てみれば確かに自動採番するときにシーケンスの次の番号を入れようとしてるらしい。
|
85
|
+
|
86
|
+
↓
|
87
|
+
|
88
|
+
じゃあ手運用後にシーケンスの値合わせてあげれば解決するのでは?
|
89
|
+
[シーケンスの値を変更をするには](http://www.ksknet.net/postgresql/post_34.html)
|
90
|
+
|
91
|
+
```
|
92
|
+
SELECT SETVAL('"test_master_test_id_seq"', 100);
|
93
|
+
```
|
94
|
+
|
95
|
+
↓
|
96
|
+
|
97
|
+
```Python
|
98
|
+
TestMaster.objects.create(title="title",
|
99
|
+
content="content",
|
100
|
+
creator="ADMIN"
|
101
|
+
)
|
102
|
+
```
|
103
|
+
|
104
|
+
↓
|
105
|
+
|
106
|
+
DBに **ID=101** で登録された!
|
107
|
+
|
108
|
+
|
109
|
+
---
|
110
|
+
|
111
|
+
**結論**
|
112
|
+
|
113
|
+
- pgAdminで手動でレコード追加する場合は シーケンスを更新してあげないといけない
|
114
|
+
- ↑が嫌なら、自動採番じゃなくてUUIDなどに変更すべき
|
115
|
+
|
116
|
+
|
117
|
+
個人的にはシーケンス更新が楽な気がするのでとりあえず解決
|
118
|
+
|
119
|
+
同じ事象で困っている方の役に立ちますように。
|
3
。
title
CHANGED
File without changes
|
body
CHANGED
@@ -73,4 +73,12 @@
|
|
73
73
|
```
|
74
74
|
|
75
75
|
排他制御入れないとだめそう?だけど一応これなら自動採番もどきはできる・・・
|
76
|
-
けど自動採番したい・・・
|
76
|
+
けど自動採番したい・・・
|
77
|
+
|
78
|
+
---
|
79
|
+
|
80
|
+
### 「Djangoでは、モデルのプライマリーキーがシーケンスによって決まります。」
|
81
|
+
|
82
|
+
[Django-モデルのプライマリキーをUUIDにする](https://hodalog.com/from-id-to-uuid-django-model/)
|
83
|
+
|
84
|
+
シーケンス・・・?と思ってDBを見てみれば確かに自動採番するときにシーケンスの次の番号を入れようとしてるらしい。
|
2
.
title
CHANGED
File without changes
|
body
CHANGED
@@ -56,4 +56,21 @@
|
|
56
56
|
**調査した結果の追記**
|
57
57
|
Django ってDBを直接編集することを想定してないのか・・・?
|
58
58
|
どうやったら同期とれるんだ・・・
|
59
|
-
登録する前にidの最大値とってくるしかないのか・・・?
|
59
|
+
登録する前にidの最大値とってくるしかないのか・・・?
|
60
|
+
|
61
|
+
------
|
62
|
+
|
63
|
+
**かなしみの暫定対応**
|
64
|
+
|
65
|
+
```Python
|
66
|
+
entry = TestMaster.objects.all().aggregate(Max('test_id'))
|
67
|
+
|
68
|
+
TestMaster.objects.create(test_id=entry["test_id__max"] + 1,
|
69
|
+
title=title,
|
70
|
+
content=content,
|
71
|
+
creator=user
|
72
|
+
)
|
73
|
+
```
|
74
|
+
|
75
|
+
排他制御入れないとだめそう?だけど一応これなら自動採番もどきはできる・・・
|
76
|
+
けど自動採番したい・・・
|
1
。
title
CHANGED
File without changes
|
body
CHANGED
@@ -50,4 +50,10 @@
|
|
50
50
|
DBに直接レコードを追加してしまったがためにAutoFieldが機能していないのか、
|
51
51
|
それともただ単に書き方が悪いのか・・・
|
52
52
|
|
53
|
-
お時間ある方でAutoField設定項目について知識をお持ちの方いらっしゃいましたらご助力頂けますと幸いです。
|
53
|
+
お時間ある方でAutoField設定項目について知識をお持ちの方いらっしゃいましたらご助力頂けますと幸いです。
|
54
|
+
|
55
|
+
---
|
56
|
+
**調査した結果の追記**
|
57
|
+
Django ってDBを直接編集することを想定してないのか・・・?
|
58
|
+
どうやったら同期とれるんだ・・・
|
59
|
+
登録する前にidの最大値とってくるしかないのか・・・?
|