Cakephp3のクエリビルダを使ってinsertをしようとしたところ下記エラーが出て実行できませんでした。
Unique violation: 7 ERROR: 重複キーが一意性制約"hogefuga_pkey"に違反しています DETAIL: キー (id)=(1) はすでに存在します
恐らくシーケンスが取れてないことが原因だと思うのですがシーケンスを取るための設定があるのでしょうか?
正常に実行させるために必要なものが知りたいです。
idを指定せずにinsertすれば自動でidが設定されると考えていたのですが違うみたいで困っています。
環境は
Cakephp 3.5.1
postgres 9.5.5
下記のようなソースです
PHP
1$datas = [ 2 ['hoge' => 1, 'fuga' => 2], 3 ['hoge' => 3, 'fuga' => 4], 4]; 5$table = TableRegistry::get('hogefuga') ; 6$query = $table->query(); 7$query->insert('hoge', 'fuga'); 8foreach ($datas as $key => $value) { 9 $query->values($value); 10} 11$query->execute();
以下のSQLが発行されました。
SQL
1INSERT INTO hogefuga ( 2 hoge, fuga 3) 4VALUES 5 ( 6 1, 2 7 ), 8 ( 9 3, 4 10 ) RETURNING *
テーブル構造は下記で既にデータが何件か入っています。
id | hoge | fuga |
---|---|---|
bigint型 not null nextval('hogefuga_id_seq'::regclass) | integer型 | integer型 |
回答2件
あなたの回答
tips
プレビュー