Uninitialized constant ActiveRecord :: ConnectionAdapters :: Mysql2Adapter :: NATIVE_DATABASE_TYPES (NameError)

I have a problem starting my rails server. ive sets the abstract_mysql2_adapters attributes in the initializer, which consist of:

class ActiveRecord::ConnectionAdapters::Mysql2Adapter
NATIVE_DATABASE_TYPES[:primary_key] = "int(11) auto_increment PRIMARY KEY"
end

and he solved my rake db: migrate problem, but when I try to start my rails server it gives me this error.

C: /Users/XXXX/Documents/RoRCmS/simple_cms/config/initializers/abstract_mysql2_adapter.rb: 2: in <class:Mysql2Adapter>': uninitialized constant ActiveRecord::ConnectionAda pters::Mysql2Adapter::NATIVE_DATABASE_TYPES (NameError) from C:/Users/John/Documents/RoRCmS/simple_cms/config/initializers/abstract_mysql2_adapter.rb:1:in'from C: /Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-4.0.0 /lib/rails/engine.rb: 609: block (2 levels) in <class:Engine>' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-4.0.0/lib/rails/engine.rb:608:ineach 'from C: /Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-4.0.0/lib/rails/engine.rb: 608: in block in <class:Engine>' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-4.0.0/lib/rails/initializable.rb:30:ininstance_exec 'from C: /Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-4.0.0/lib/rails/initializable.rb: 30: to run' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-4.0.0/lib/rails/initializable.rb:55:inblock in run_initializers' from C: / Ruby23- x64 / lib / ruby ​​/ 2.3.0 / tsort.rb: 228: to block in tsort_each' from C:/Ruby23-x64/lib/ruby/2.3.0/tsort.rb:350:inblock (2 levels) to each_strongly_connected_component 'from C: /Ruby23-x64/lib/ruby/2.3.0/tsort.rb: 431: in each_strongly_connected_component_from' from C:/Ruby23-x64/lib/ruby/2.3.0/tsort.rb:349:inblock to each_strongly_connected_component 'from C: /Ruby23-x64/lib/ruby/2.3.0/tsort.rb: 347: ineach' from C:/Ruby23-x64/lib/ruby/2.3.0/tsort.rb:347:incall 'from C: /Ruby23-x64/lib/ruby/2.3.0/tsort.rb: 347: in each_strongly_connected_component' from C:/Ruby23-x64/lib/ruby/2.3.0/tsort.rb:226:intsort_each' from C: /Ruby23-x64/lib/ruby/2.3.0/tsort.rb: 205: in tsort_each' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-4.0.0/lib/rails/initializable.rb:54:inrun_initializers 'from C: /Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-4.0.0/lib/rails/application.rb: 215: in initialize!' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-4.0.0/lib/rails/railtie/configurable.rb:30:inmethod_missing' from C: / Users / John / Documents /RoRCmS/simple_cms/config/environment.rb: 5: in <top (required)>' from C:/Users/John/Documents/RoRCmS/simple_cms/config.ru:3:inrequire 'from C: /Users/John/Documents/RoRCmS/simple_cms/config.ru: 3: in block in <main>' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rack-1.5.5/lib/rack/builder.rb:55:ininstance_eval' from C: / Ruby23-x64 / lib / ruby /gems/2.3.0/gems/rack-1.5.5/lib/rack/builder.rb: 55: in initialize' from C:/Users/John/Documents/RoRCmS/simple_cms/config.ru:innew 'from C: /Users/John/Documents/RoRCmS/simple_cms/config.ru: in <main>' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rack-1.5.5/lib/rack/builder.rb:49:ineval' from C: /Ruby23-x64/lib/ruby/gems/2.3.0/gems/rack-1.5.5/lib/rack/builder.rb: 49: innew_from_string' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rack-1.5.5/lib/rack/builder.rb:40:inparse_file 'from C: /Ruby23-x64/lib/ruby/gems/2.3.0/gems/rack-1.5.5/lib/rack/server.rb: 277: in build_app_and_options_from_config' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rack-1.5.5/lib/rack/server.rb:199:inapp' from C: / Ruby23-x64 / lib /ruby/gems/2.3.0/gems/railties-4.0.0/lib/rails/commands/server.rb: 48: in app' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rack-1.5.5/lib/rack/server.rb:314:inwrapped_app 'by C: /Ruby23-x64/lib/ruby/gems/2.3.0/ gems / railties-4.0.0 / lib / rails / commands / server.rb: 75: in start' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-4.0.0/lib/rails/commands.rb:78:inblock in 'from C: /Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-4.0.0/ lib / rails / commands.rb: 73: in tap' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-4.0.0/lib/rails/commands.rb:73:in'from bin / rails: 4: in require' from bin/rails:4:in'

I really need to solve this problem now. Thanks guys.

+4
source share
3 answers

. dump sql MySQL mysql -u username -p database_name < file.sql, bin/rake db:migrate, Mysql2::Error: All parts of a PRIMARY KEY must be NOT NULL; if you need NULL in a key, use UNIQUE instead.

, , , pjg https://github.com/rails/rails/pull/13247#issuecomment-32425844,

uninitialized constant ActiveRecord::ConnectionAdapters::Mysql2Adapter::NATIVE_DATABASE_TYPES (NameError)

John Geliberte Gemfile gem 'activerecord-native_db_types_override' , gem 'mysql2' (NOT 'activerecord-mysql2-adapter', ) bundle install.

, activerecord-native_db_types_override gem NATIVE_DATABASE_TYPES, Rails ActiveRecord abstract_mysql_adapter, :

config/initializers/abstract_mysql2_adapter.rb :

require 'active_record/connection_adapters/mysql2_adapter'
NativeDbTypesOverride.configure({
  ActiveRecord::ConnectionAdapters::Mysql2Adapter => {
    primary_key: "int(11) auto_increment PRIMARY KEY"
  }
})

config/environment.rb :

require File.expand_path('../initializers/abstract_mysql2_adapter.rb', __FILE__)

, config/database.yml ": mysql2" db, .

bin/rake db:migrate .

ActiveRecord Override Gem.

MySQL 5.7 5.5, .

:

  • mysql -V mysql Ver 14.14 Distrib 5.7.13
  • rails -v 4.2.4
  • ruby -v ruby 2.3.0p0
+5

SOLVED: gem: gem 'activerecord-native_db_types_override'

+3

Try using this code:

class ActiveRecord::ConnectionAdapters::Mysql2Adapter
  def modify_types(types)
    super
    types[:primary_key] = "int(11) auto_increment PRIMARY KEY"
    types
  end
end
0
source

All Articles