Why is this migration trying to re-create schema_info?

Postgresql Migration Failure on 4th migration (attachment_fu).
A migration fails mysteriously.

The console says:
rake aborted!
uninitialized constant AttachmentImages

The log says:
  SQL (0.000000) PGError: ERROR: relation "schema_info" already
exists
: CREATE TABLE schema_info (version integer)

Of course it exists, it's up to 3.

The database is not modified.

Rails 1.2.4,
ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]

The failing migration looks okay to me:
  def self.up
    add_column :images, :parent_id, :integer
    add_column :images, :content_type, :string
    add_column :images, :filename, :string
    add_column :images, :thumbnail, :string
    add_column :images, :size, :integer

    add_index :images, :artist_id
  end

fredistic

Postgresql Migration Failure on 4th migration (attachment_fu).
A migration fails mysteriously.

The console says:
rake aborted!
uninitialized constant AttachmentImages

Is there a stack trace to go with that ?

Fred

Those are two different problems. The second is unrelated to the first
and can be ignored. AR just blindly tries to create the schema_info in
every migration; it ignores the "already exists" problem.

You need to investigate the AttachmentImages problem.

F.C. asked for a stack trace. Changing the file name changes the name
of the uninitialized constant that triggers the error, matching it.
Here it is called 004_imaginary.rb. So the "uninitialized constant' it
complains about is 'Imaginary'. I've tried other names and the error
message follows the file name.

I can use rake db:migrate VERSION=2 and 3 to go back and forth without
a problem. Putting in 'VERSION=4' results in identical error
messages, of course. Schema_info in the database is 3.

dir db\migrate

Directory of C:\InstantRails\rails_apps\g1\db\migrate

11/06/2007 03:42 PM <DIR> .
11/06/2007 03:42 PM <DIR> ..
10/19/2007 03:44 PM 474 001_create_images.rb
10/19/2007 03:44 PM 612 002_create_users.rb
10/19/2007 03:44 PM 561 003_more_user.rb
11/06/2007 03:39 PM 767 004_imaginary.rb
               4 File(s) 2,414 bytes
               2 Dir(s) 18,688,790,528 bytes free

rake --trace db:migrate

(in C:/InstantRails/rails_apps/g1)
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:migrate
rake aborted!
uninitialized constant Imaginary
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.3/lib/
active_support/dependencies.rb:266:in `load_missing_constant'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.3/lib/
active_support/dependencies.rb:452:in `const_missing'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.3/lib/
active_support/dependencies.rb:464:in `const_missing'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.3/lib/
active_support/inflector.rb:250:in `constantize'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.3/lib/
active_support/core_ext/string/inflections.rb:148:in `constantize'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.4/lib/
active_record/migration.rb:366:in `migration_class'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.4/lib/
active_record/migration.rb:346:in `migration_classes'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.4/lib/
active_record/connection_adapters/abstract_adapter.rb:128:in `inject'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.4/lib/
active_record/migration.rb:342:in `each'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.4/lib/
active_record/migration.rb:342:in `inject'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.4/lib/
active_record/migration.rb:342:in `migration_classes'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.4/lib/
active_record/migration.rb:330:in `migrate'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.4/lib/
active_record/migration.rb:297:in `up'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.4/lib/
active_record/migration.rb:288:in `migrate'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/rails-1.2.4/lib/tasks/
databases.rake:4
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/rake-0.7.2/lib/rake.rb:
399:in `call'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/rake-0.7.2/lib/rake.rb:
399:in `execute'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/rake-0.7.2/lib/rake.rb:
399:in `each'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/rake-0.7.2/lib/rake.rb:
399:in `execute'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/rake-0.7.2/lib/rake.rb:
369:in `invoke'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/rake-0.7.2/lib/rake.rb:
362:in `synchronize'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/rake-0.7.2/lib/rake.rb:
362:in `invoke'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/rake-0.7.2/lib/rake.rb:
1935:in `run'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/rake-0.7.2/lib/rake.rb:
1935:in `each'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/rake-0.7.2/lib/rake.rb:
1935:in `run'
C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/rake-0.7.2/bin/rake:7
C:/InstantRails/ruby/bin/rake.bat:20:in `load'
C:/InstantRails/ruby/bin/rake.bat:20

fredistic

I changed the name of the class to match the name of the .rb file and
and it just worked. I did not understand they had to be the same.
Perhaps I once knew and forgot? Thanks for all the help...

I changed the name of the class to match the name of the .rb file and
and it just worked. I did not understand they had to be the same.
Perhaps I once knew and forgot? Thanks for all the help...