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

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? :slight_smile:

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