2016-05-19 6 views
4

私のレール・サーバーの実行に問題があります。 IVEは、から構成さイニシャライザでabstract_mysql2_adapters設定:未初期化定数ActiveRecord :: ConnectionAdapters :: Mysql2Adapter :: NATIVE_DATABASE_TYPES(NameError)

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

をし、それは私のすくいデシベルを解決:問題の移行が、私は私のレールのサーバを実行しようとすると、それは私に、このエラーが発生します。

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:in 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:in each' 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:in instance_exec' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-4.0.0/lib/rails/initializable.rb:30:in run' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/railties-4.0.0/lib/rails/initializable.rb:55:in block in run_initializers' from C:/Ruby23-x64/lib/ruby/2.3.0/tsort.rb:228:in block in tsort_each' from C:/Ruby23-x64/lib/ruby/2.3.0/tsort.rb:350:in block (2 levels) in 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:in block in each_strongly_connected_component' from C:/Ruby23-x64/lib/ruby/2.3.0/tsort.rb:347:in each' from C:/Ruby23-x64/lib/ruby/2.3.0/tsort.rb:347:in call' 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:in tsort_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:in run_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:in method_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:in require' 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:in instance_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:in new' 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:in eval' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rack-1.5.5/lib/rack/builder.rb:49:in new_from_string' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rack-1.5.5/lib/rack/builder.rb:40:in parse_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:in app' 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:in wrapped_app' from 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:in block 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 '

私は本当にこの問題を解決する必要があります。ありがとうございます。

答えて

0

代わりにこのコードを試してみてください。

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

です:PRIMARY KEYのすべての部分はNOT NULLでなければなりません。 –

+0

NOT NULLをプライマリキーの定義 –

+0

(11)auto_incrementプライマリキーはNULLではありませんが、私には同じエラーが返されます –

3

が解決:私は宝石を追加しました:宝石 'のActiveRecord-native_db_types_override'

+0

これは他に何も必要ありませんでした。 – vinegarbin

5

次のように私はそれを解決しました。従来のSQLダンプファイルをmysql -u username -p database_name < file.sqlでMySQLにインポートした後、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のアドバイスに従い、gem 'activerecord-native_db_types_override'と私のGemfileを更新していることを確認私もgem 'mysql2'(他のエラーの原因となる 'activerecord-mysql2-adapter'ではない)を持っていて、bundle installを実行しました。

Iはactiverecord-native_db_types_override gemに関連付けられているドキュメントを使用し、abstract_mysql_adapterためRails ActiveRecord library fileで述べNATIVE_DATABASE_TYPESのプロパティを適用し、私は、次の変更を加えように:私は設定/イニシャライザ/ 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をが含まれていることを確認:私が使用していたDB接続のための 'アダプターmysql2' を。

その後、bin/rake db:migrateを実行して、正常に移行を実行しました。

私はpull requestを、ActiveRecordネイティブデータベースタイプオーバーライドGemのドキュメントにしました。

MySQL 5.7から5.5にダウングレードするのはずっと簡単でした。

私のシステム:Mysql2 ::エラー:

  • mysql -Vmysql Ver 14.14 Distrib 5.7.13
  • rails -v4.2.4
  • ruby -vですが、それは私のレールのサーバのコマンドの問題を解決しますが、このエラーを与えるruby 2.3.0p0
関連する問題