質問編集履歴

5

.

2019/11/07 02:18

投稿

azuapricot
azuapricot

スコア2341

test CHANGED
File without changes
test CHANGED
@@ -180,7 +180,7 @@
180
180
 
181
181
  ```
182
182
 
183
- SELECT SETVAL('"test_master_test_id_seq"', 100);
183
+ SELECT setval('test_master_test_id_seq', (SELECT MAX(test_id) FROM test_master));
184
184
 
185
185
  ```
186
186
 

4

解決

2019/11/07 02:18

投稿

azuapricot
azuapricot

スコア2341

test CHANGED
File without changes
test CHANGED
@@ -165,3 +165,73 @@
165
165
 
166
166
 
167
167
  シーケンス・・・?と思ってDBを見てみれば確かに自動採番するときにシーケンスの次の番号を入れようとしてるらしい。
168
+
169
+
170
+
171
+
172
+
173
+
174
+
175
+ じゃあ手運用後にシーケンスの値合わせてあげれば解決するのでは?
176
+
177
+ [シーケンスの値を変更をするには](http://www.ksknet.net/postgresql/post_34.html)
178
+
179
+
180
+
181
+ ```
182
+
183
+ SELECT SETVAL('"test_master_test_id_seq"', 100);
184
+
185
+ ```
186
+
187
+
188
+
189
+
190
+
191
+
192
+
193
+ ```Python
194
+
195
+ TestMaster.objects.create(title="title",
196
+
197
+ content="content",
198
+
199
+ creator="ADMIN"
200
+
201
+ )
202
+
203
+ ```
204
+
205
+
206
+
207
+
208
+
209
+
210
+
211
+ DBに **ID=101** で登録された!
212
+
213
+
214
+
215
+
216
+
217
+ ---
218
+
219
+
220
+
221
+ **結論**
222
+
223
+
224
+
225
+ - pgAdminで手動でレコード追加する場合は シーケンスを更新してあげないといけない
226
+
227
+ - ↑が嫌なら、自動採番じゃなくてUUIDなどに変更すべき
228
+
229
+
230
+
231
+
232
+
233
+ 個人的にはシーケンス更新が楽な気がするのでとりあえず解決
234
+
235
+
236
+
237
+ 同じ事象で困っている方の役に立ちますように。

3

2019/11/07 01:52

投稿

azuapricot
azuapricot

スコア2341

test CHANGED
File without changes
test CHANGED
@@ -149,3 +149,19 @@
149
149
  排他制御入れないとだめそう?だけど一応これなら自動採番もどきはできる・・・
150
150
 
151
151
  けど自動採番したい・・・
152
+
153
+
154
+
155
+ ---
156
+
157
+
158
+
159
+ ### 「Djangoでは、モデルのプライマリーキーがシーケンスによって決まります。」
160
+
161
+
162
+
163
+ [Django-モデルのプライマリキーをUUIDにする](https://hodalog.com/from-id-to-uuid-django-model/)
164
+
165
+
166
+
167
+ シーケンス・・・?と思ってDBを見てみれば確かに自動採番するときにシーケンスの次の番号を入れようとしてるらしい。

2

.

2019/11/07 01:33

投稿

azuapricot
azuapricot

スコア2341

test CHANGED
File without changes
test CHANGED
@@ -115,3 +115,37 @@
115
115
  どうやったら同期とれるんだ・・・
116
116
 
117
117
  登録する前にidの最大値とってくるしかないのか・・・?
118
+
119
+
120
+
121
+ ------
122
+
123
+
124
+
125
+ **かなしみの暫定対応**
126
+
127
+
128
+
129
+ ```Python
130
+
131
+ entry = TestMaster.objects.all().aggregate(Max('test_id'))
132
+
133
+
134
+
135
+ TestMaster.objects.create(test_id=entry["test_id__max"] + 1,
136
+
137
+ title=title,
138
+
139
+ content=content,
140
+
141
+ creator=user
142
+
143
+ )
144
+
145
+ ```
146
+
147
+
148
+
149
+ 排他制御入れないとだめそう?だけど一応これなら自動採番もどきはできる・・・
150
+
151
+ けど自動採番したい・・・

1

2019/11/06 10:20

投稿

azuapricot
azuapricot

スコア2341

test CHANGED
File without changes
test CHANGED
@@ -103,3 +103,15 @@
103
103
 
104
104
 
105
105
  お時間ある方でAutoField設定項目について知識をお持ちの方いらっしゃいましたらご助力頂けますと幸いです。
106
+
107
+
108
+
109
+ ---
110
+
111
+ **調査した結果の追記**
112
+
113
+ Django ってDBを直接編集することを想定してないのか・・・?
114
+
115
+ どうやったら同期とれるんだ・・・
116
+
117
+ 登録する前にidの最大値とってくるしかないのか・・・?