PostgreSQLでは、新しいテーブルを作成し、列に新しいシーケンスを割り当てましたid
。PostgreSQLコンソールからレコードを挿入すると機能しますが、Railsからレコードをインポートしようとすると、関連するシーケンスが見つからないという例外が発生します。
表は次のとおりです。
\d+ user_messages;
Table "public.user_messages"
Column | Type | Modifiers | Storage | Description
-------------+-----------------------------+------------------------------------------------------------+----------+-------------
id | integer | not null default nextval('new_user_messages_id'::regclass) | plain |
しかし、Railsが使用するSQLクエリを使用してシーケンスを取得しようとすると、NULLが返されます。
select pg_catalog.pg_get_serial_sequence('user_messages', 'id');
pg_get_serial_sequence
------------------------
(1 row)
Railsによって発生するエラーは次のとおりです。
UserMessage.import [UserMessage.new]
NoMethodError: undefined method `split' for nil:NilClass
from /app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:910:in `default_sequence_name'
この問題は、ActiveRecord拡張機能を使用してバルクレコードをインポートする場合にのみ発生します。単一のレコードはActiveRecordを介して保存されます。
どうすれば修正できますか?