I'm running a rails 2.3.5 / ruby 1.8.7 / postgresql 8.4.2 app and have
just run into a curious problem.

I have several tables that are initialized with data from csv files
and I've noticed that, when I try to add new data to any of these
tables via Table.new I get a PGError on duplicate key.

For example:

MIGRATION:
class CreateNumbers < ActiveRecord::Migration
  def self.up
    create_table :numbers do |t|
      t.string :name
      t.integer :value

      t.timestamps
    end
    csv_file = "#{Rails.root}/db/migrate/numbers.csv"
    fields = '(name, number)'
    execute "COPY numbers from '#{csv_file}' DELIMITERS ',' CSV;"
  end

  def self.down
    drop_table :numbers
  end
end

CSVFILE:
1, "one", 1, Wed Apr 14 14:52:22 -0400 2010, Wed Apr 14 14:52:22 -0400
2010
2, "two", 2, Wed Apr 14 14:52:22 -0400 2010, Wed Apr 14 14:52:22 -0400
2010
3, "three", 3, Wed Apr 14 14:52:22 -0400 2010, Wed Apr 14 14:52:22
-0400 2010
4, "four", 4, Wed Apr 14 14:52:22 -0400 2010, Wed Apr 14 14:52:22
-0400 2010
5, "five", 5, Wed Apr 14 14:52:22 -0400 2010, Wed Apr 14 14:52:22
-0400 2010
6, "six", 6, Wed Apr 14 14:52:22 -0400 2010, Wed Apr 14 14:52:22 -0400
2010
7, "seven", 7, Wed Apr 14 14:52:22 -0400 2010, Wed Apr 14 14:52:22
-0400 2010
8, "eight", 8, Wed Apr 14 14:52:22 -0400 2010, Wed Apr 14 14:52:22
-0400 2010

Running db:migrate leaves me with a consistant Numbers table that I
can interract with through scripts/console except I can't
Number.create or n.save!.

Loading development environment (Rails 2.3.5)
>> Number.all.length
=> 8
>> Number.last
=> #<Number id: 8, name: " eight", value: 8, created_at: "2010-04-14
14:52:22", updated_at: "2010-04-14 14:52:22">
>> n = Number.new(:name => "nine", :value => 8)
=> #<Number id: nil, name: "nine", value: 8, created_at: nil,
updated_at: nil>
>> n
=> #<Number id: nil, name: "nine", value: 8, created_at: nil,
updated_at: nil>
>> n.save
ActiveRecord::StatementInvalid: PGError: ERROR:  duplicate key value
violates unique constraint "numbers_pkey"
: INSERT INTO "numbers" ("name", "created_at", "updated_at", "value")
VALUES(E'nine', '2010-04-14 19:07:44.694130', '2010-04-14
19:07:44.694130', 8) RETURNING "id"


Any ideas?

thanks in advance
Rick

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to rubyonrails-t...@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to