2017-05-05 3 views
0

マイgemfile:Railsとmysql2宝石不正なパケット

source 'https://rubygems.org' 
gem 'rails', '4.2.8' 
gem 'bootstrap-sass', '~> 3.3.7' 
gem 'font-awesome-rails' 
gem 'sqlite3' 
gem 'mysql2' 
gem 'sass-rails', '~> 5.0.4' 
gem 'uglifier', '>= 1.3.0' 
gem 'coffee-rails', '~> 4.0.0' 
gem 'turbolinks' 
gem 'jbuilder', '~> 1.2' 
group :doc do 
    gem 'sdoc', require: false 
end 

私のデータベースの設定:コンソールで

default: &default 
    adapter: mysql2 
    pool: 25 
    timeout: 5000 
    encoding: utf8 

development: 
    <<: *default 
    host: 127.0.0.1 
    database: asteriskcdrdb 
    username: root 
    password: pwd3lfga 
    port: 13306 

私はコンソールを起動し、DB内のテーブルから読み取るしようとした後、私はこのエラーを持っています:

Mysql2::Error: Malformed packet 
    from /Users/michele/.rvm/gems/ruby-2.2.2/gems/mysql2-0.4.6/lib/mysql2/client.rb:89:in `connect' 
    from /Users/michele/.rvm/gems/ruby-2.2.2/gems/mysql2-0.4.6/lib/mysql2/client.rb:89:in `initialize' 
    from /Users/michele/.rvm/gems/ruby-2.2.2/gems/activerecord-4.2.8/lib/active_record/connection_adapters/mysql2_adapter.rb:18:in `new' 
+0

あなたは[1]、このソリューションを試しましたか?追加された:local_infile =>オプションとして真。 [1] https://stackoverflow.com/questions/8790874/load-data-local-infile-causes-malformed-packet-error-with-mysql2-gem – tingel2k

+0

@ tingel2kどこにそのオプションを入れますか? database.ymlで? – michael

+0

このコマンドでコンソールによりしようと試み: = Mysql2 :: Client.new(:ユーザ名=> 'ルート'、:ホスト=> '127.0.0.1'、:パスワード=> 'pwd3lfga':データベース=> 'asteriskcdrdb 」、:local_infile =>真、:Railsのコンソールポート=> 13306) 出力:Mysql2 ::エラー:不正なパケット – michael

答えて

0

これは、単にmysql2 gemを再インストールすることで解決します。ソースからコンパイルされたMySQLバージョンでインストールしたのち、後でbrewを使ってインストールしたMySQLに切り替えたと思うので、gemで使用されるクライアントコードに互換性がありません。それはコマンドラインクライアントからはうまくいったが、gemを使っていないときはなぜそうなるのかを説明している。

gem uninstall mysql2 
gem install mysql2 

Gemfileからgem 'sqlite3'を削除します。

+1

が、問題は解決されていません - また、クライアント上でlibmysqlのバージョンを確認し、サーバーのバージョンを確認するには、それを比較してみてください – michael

関連する問題