EC-CUBEの規格登録をしようとしたら下記のエラーが出た件
*—————————————————————*
SQL: [INSERT INTO dtb_classcategory(name,class_id,creator_id,rank,create_date,update_date,classcategory_id)
SELECT $1,$2,$3,$4,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,$5]
PlaceHolder: [array (
0 => ‘テストデータ’,
1 => ’92’,
2 => ‘2’,
3 => 3,
4 => 96,
)]
MDB2 Error: unknown error
_doQuery: [Error message: Could not execute statement]
[Last executed query: EXECUTE mdb2_statement_pgsql_2977d07f3499f15f5f700e51693c3dfbbe8b622f1d (‘テストデータ’, ’92’, ‘2’, 3, 96)]
[Native message: ERROR: 重複キーが一意性制約”dtb_classcategory_pkey”に違反しています
DETAIL: キー (classcategory_id)=(96) はすでに存在します]
*—————————————————————*
EC-CUBE 2.x
PostgreSQL
classcategory_idがかぶっているよというエラーです。
PostgreSQLで状況を確認します。(phpPgAdmin)
まずはシーケンスの状況を確認します。
1 |
select * from dtb_classcategory_classcategory_id_seq; |
last_valueの値がclasscategory_idの最後の値です。
これが96になっています。
classcategory_idのMAXの値を調べます。
1 |
SELECT MAX(classcategory_id) FROM dtb_classcategory; |
240と値が返ってきました。
last_valueの値を変える必要があります。
1 |
select setval('dtb_classcategory_classcategory_id_seq',241); |
下記のエラーが出ました。
「リードオンリーのトランザクションでは setval() を実行できません」
phpPgAdminでは実行ができないようなので、SSHでサーバーに繋げて直接PostgreSQLから実行します。
1 |
# select setval('dtb_classcategory_classcategory_id_seq',241); |
最後に規格登録の動作確認をして登録できればOKです。