Forum: Ruby on Rails Error in loading CSV fixtures (Rails 1.2.1, Ruby 1.8.5)

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Jens (Guest)
on 2007-02-11 19:26
(Received via mailing list)
Hello,

I am redesigning a web application previously written in PHP. To do
development I need to fill a number of my models' tables with static
data. I have written a conversion script (in Ruby) to extract the data
from the old database and convert it a bit.

For now, I wrote a script in db/fixtures/convert.rb which takes a
number of CSV files in db/fixtures/static/*csv containing the old
data, and produces converted tables in db/fixtures/$TABLE_NAME.csv.
(BTW: Is this the "right way" of doing this? In the end, I'd like to
write a rake task that calls my convert script to import all data from
the current PHP production DB, converts it, imports it into the Rails
app, and then I can switch production environments with minimal
downtime.)

Now I want to import these resulting CSV files with "rake
db:fixtures:load". One table e.g. looks like this:

$ cat db/fixtures/cities.csv
id,name,district,country_id,longitude,latitude,importance,area,inhabitants
1,Aachen,NRW,276,6088538,50775620,3,0,26000
2,Achim bei Bremen,NDS,276,9025491,53012831,3,0,25000
3,Ahaus,NRW,276,7003480,52079246,3,0,25000

But when I try to import this data I get:

$ rake --trace db:fixtures:load
** Invoke db:fixtures:load (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:fixtures:load
rake aborted!
SQLite3::SQLException: SQL logic error or missing database: INSERT
INTO cities ("id") VALUES (2)

I don't get this:
- Why is it trying to insert only the ID? I'm quite sure it fails
because my DB schema specifies ":null => false" for some of the other
colums, such as "name", but why doesn't it take the other columns too?
- Why is it not starting with inserting the first object (ID=1)?
- How do I get this working? :)

My development and test databases exist and the structures are
correct:

  create_table "cities", :force => true do |t|
    t.column "name",        :string,  :null => false
    t.column "district",    :string
    t.column "country_id",  :integer, :null => false
    t.column "longitude",   :integer
    t.column "latitude",    :integer
    t.column "importance",  :integer
    t.column "area",        :integer
    t.column "inhabitants", :integer
  end

I read the load_fixtures.rb file from ActiveRecord (where the error is
triggered) but I don't quite know how to debug this further, and I
don't want to muck about in the AR code.

Any help would be appreciated!

Jens
This topic is locked and can not be replied to.