あなたの問題は、 serial
を使用するのではなく、これらすべてを手動で設定することだと思います。 桁。 シリアル
を使用する場合 列の場合、PostgreSQLはシーケンスを作成し、適切なデフォルト値を設定し、シーケンスが問題のテーブルと列によって所有されていることを確認します。 詳細なマニュアル> :
ただし、 serial
は使用していません またはbigserial
したがって、 pg_get_serial_sequence
役に立たない。
これを修正するには、次のようにします。
alter sequence new_user_messages_id owned by user_messages.id
これが完全な解決策であるかどうかはわかりません。誰か(こんにちはアーウィン)がおそらく不足している部分を埋めるでしょう。
シリアル
id
のデータ型として 桁。これにより、シーケンスが作成され、接続されます。
例:
=> create sequence seq_test_id;
=> create table seq_test (id integer not null default nextval('seq_test_id'::regclass));
=> select pg_catalog.pg_get_serial_sequence('seq_test','id');
pg_get_serial_sequence
------------------------
(1 row)
=> alter sequence seq_test_id owned by seq_test.id;
=> select pg_catalog.pg_get_serial_sequence('seq_test','id');
pg_get_serial_sequence
------------------------
public.seq_test_id
(1 row)