Ошибка «неинициализированная переменная класса @@ columns_cache» во время миграции - PullRequest
0 голосов
/ 29 октября 2019

Так что у меня есть миграция, чтобы удалить ненужные столбцы

[:table_name_1, :table_name_2, :table_name_3, :table_name_4].each do |tables|
  remove_column tables, :column_name_here
end

Когда я использую

rake db:migrate --trace

Я получаю что-то вроде этого

 ==  RemoveColumntsFromDB: migrating ========================================
    -- remove_column(:table_name_1, :column_name_here)
    rake aborted!
    An error has occurred, all later migrations canceled:

    uninitialized class variable @@columns_cache in ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter
    C:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/activerecord-oracle_enhanced-adapter-1.2.4/lib/active_record/connection_adapters/oracle_enhanced_adapter.rb:936:in `clear_table_columns_cache'
    C:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/activerecord-oracle_enhanced-adapter-1.2.4/lib/active_record/connection_adapters/oracle_enhanced_adapter.rb:1143:in `remove_column'
    C:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/migration.rb:352:in `send'
    C:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/migration.rb:352:in `method_missing'
    C:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/migration.rb:328:in `say_with_time'
    C:/Ruby/Ruby187/lib/ruby/1.8/benchmark.rb:293:in `measure'
    C:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/migration.rb:328:in `say_with_time'
    C:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/migration.rb:348:in `method_missing'

Кто-нибудь имеет представление, почему?

1 Ответ

0 голосов
/ 29 октября 2019

Это была проблема с базой данных.

Она использовалась для сеансов вместо файлов cookie по умолчанию, потому что конфиденциальная информация.

Так rake db:sessions:create исправили ее.

...