Skip to content

Nil variable @version_year is causing error when Rails try to load schema on the test database #950

Closed
@theo-bittencourt

Description

@theo-bittencourt

Issue

Cannot setup test db properly because db:schema:load is raising NoMethodError: undefined method<' for nil:NilClass`.

In the method ConnectionAdapters::SQLServer::SchemaStatements.drop_table, the variable @version_year is not defined yet at this point.

Expected behavior

Should load schema on test db.

Actual behavior

rails db:schema:load RAILS_ENV=test or rails db:test:prepare are raising NoMethodError: undefined method<' for nil:NilClass`.

How to reproduce

Run rails db:schema:load RAILS_ENV=test or rails db:test:prepare.

Details

  • Rails version: 6.1.4.1
  • SQL Server adapter version: 6.1.2.1
  • TinyTDS version: 2.1.5
  • FreeTDS details:
Compile-time settings (established with the "configure" script)
                            Version: freetds v1.3.2
             freetds.conf directory: /usr/local/etc
     MS db-lib source compatibility: no
        Sybase binary compatibility: yes
                      Thread safety: yes
                      iconv library: yes
                        TDS version: 7.3
                              iODBC: no
                           unixodbc: yes
              SSPI "trusted" logins: no
                           Kerberos: yes
                            OpenSSL: yes
                             GnuTLS: no
                               MARS: yes

Stacktrace

NoMethodError: undefined method `<' for nil:NilClass
.../ruby/3.0.2/lib/ruby/gems/3.0.0/gems/activerecord-sqlserver-adapter-6.1.2.1/lib/active_record/connection_adapters/sqlserver/schema_statements.rb:29:in `drop_table'
.../ruby/3.0.2/lib/ruby/gems/3.0.0/gems/activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract/schema_statements.rb:317:in `create_table'
.../ruby/3.0.2/lib/ruby/gems/3.0.0/gems/activerecord-sqlserver-adapter-6.1.2.1/lib/active_record/connection_adapters/sqlserver/schema_statements.rb:12:in `create_table'
.../ruby/3.0.2/lib/ruby/gems/3.0.0/gems/activerecord-6.1.4.1/lib/active_record/migration.rb:929:in `block in method_missing'
.../ruby/3.0.2/lib/ruby/gems/3.0.0/gems/activerecord-6.1.4.1/lib/active_record/migration.rb:897:in `block in say_with_time'
.../ruby/3.0.2/lib/ruby/3.0.0/benchmark.rb:293:in `measure'
.../ruby/3.0.2/lib/ruby/gems/3.0.0/gems/activerecord-6.1.4.1/lib/active_record/migration.rb:897:in `say_with_time'
.../ruby/3.0.2/lib/ruby/gems/3.0.0/gems/activerecord-6.1.4.1/lib/active_record/migration.rb:918:in `method_missing'
.../db/schema.rb:15:in `block in <main>'
.../ruby/3.0.2/lib/ruby/gems/3.0.0/gems/activerecord-6.1.4.1/lib/active_record/schema.rb:50:in `instance_eval'
.../ruby/3.0.2/lib/ruby/gems/3.0.0/gems/activerecord-6.1.4.1/lib/active_record/schema.rb:50:in `define'
.../ruby/3.0.2/lib/ruby/gems/3.0.0/gems/activerecord-6.1.4.1/lib/active_record/schema.rb:46:in `define'

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions