web-dev-qa-db-ja.com

初期化されていない定数MysqlCompat :: MysqlRes(mms2r gemを使用)

Rails私のアプリを新しいサーバーに移動し、いくつかのgem依存関係をインストールする必要がありました。ただし、mysql gemをインストールした後、初期化されていない定数MysqlCompat :: MysqlResというエラーが発生します。 mysqlデータベースを含むrakeコマンドを実行します。mms2rgemが必要な場合にのみこのエラーが発生するようです。これを聞いたことがある人はいますか?mysql 2.8.1gemを実行しています。

22
Anon

私のMacOS X 10.6では、これを行って2.8.1 gemをインストールしました。これは、MacPortsmysql5-serverで完全に機能しました。

Sudo env ARCHFLAGS="-Arch x86_64" gem install mysql
47
Markus Strauss

基本的に問題は、ダイナミックライブラリlibmysqlclientが見つからないことです。上記のソリューションは機能しますが、gemを再構築するとき、または新しいバージョンのMySQLをインストールするときはいつでも、それらを再適用する必要があります。

別のアプローチは、ライブラリを含むMySQLディレクトリを動的ロードパスに追加することです。私の.bashrcファイルに以下を入れると問題が解決しました:

export DYLD_LIBRARY_PATH="/usr/local/mysql/lib:$DYLD_LIBRARY_PATH"
26
Steven Chanin

私の問題は、Rubyは64ビットと32ビットでしたが、「mysql」が32ビットインストールであったためです。これらのコマンドで確認してください

 file `which mysql` 
 file `which Ruby`

どちらも、Mach-O64ビット実行可能ファイルx86_64またはMach-O64ビット実行可能ファイルi386と一致する必要があります。 64ビットのmysqlをインストールしてから

export ARCHFLAGS="-Arch x86_64" ; Sudo gem install --no-rdoc --no-ri mysql -v 2.7 -- --with-mysql-dir=/usr/local --with-mysql-config=/usr/local/mysql/bin/mysql_config

そして出来上がり!

10
Kuba

Mysql 5.5をお持ちの場合は、次の手順に従ってください: http://geryit.com/blog/2011/01/installing-mysql-with-Rails-on-mac-os-x-snow-leopard/

FTR:賛成するのに愚かな担当者が必要なかったとしたら、同じ答えに賛成したでしょう。これを私の賛成と考えてください。

5
Greg L.

はい、同じ存在しないクラスMysqlCompat :: MysqlResを探して、同様のエラーメッセージが表示されました。

結局のところ、そのクラスは存在すべきではありません。エラーメッセージは、最新のMysqlドライバーの問題が原因で発生します。 mysql-2.8.1は、最後に「mysql」の追加レベルが付いた名前のディレクトリでライブラリを探しました。たとえば、私のライブラリ(MacOS X 10.5.8では)は/ usr/local/mysql/libにありますが、mysql.bundleライブラリは/ usr/local/mysql/lib/mysqlでMySQLライブラリを検索します...これは間違っています。

/ usr/local/mysql/libに「mysql」という名前の「。」を指すシンボリックリンクを作成することで、簡単に修正できることがわかりました。

したがって、ライブラリがその余分な深さで参照されると、それらは検出され、機能します。これは間違いなくハックです。これを修正するためのより適切な方法があると確信しています。私はそれが機能するために必要なだけなので、他のことを続けることができます。

さらに、これはあなたのために働かないかもしれません。エラーが次のようになっている場合は、機能する可能性があります。

  ./mysql.bundle: dlopen(./mysql.bundle, 9): Library not loaded: /usr/local/mysql/lib/mysql/libmysqlclient.15.dylib (LoadError)
  Referenced from: /Users/ccullen/Projects/npapp-v2/mysql-Ruby-2.8.1/mysql.bundle
  Reason: image not found - ./mysql.bundle
    from test.rb:5

これは最近の開発のようで、直接の反応は見られなかったので、どのように修正したかを共有したいと思いました。幸運を :)

3
user164364

Gem(再)インストール時に適切なARCHFLAGSを設定すると、シンボリックリンクを必要とせずに役立ちました。

http://joergbattermann.tumblr.com/post/181479575/fixing-the-nameerror-uninitialized-constant

2
Jörg B.

gem install -v = 2.7.1でも修正されます。

2
mml

この問題は、Ubuntuを9.10から10.04にアップグレードした後に発生しました。

Mysqlgemに問題があるようです。

症状:mysqlへの接続を必要とするActiveRecordを使用すると、「初期化されていない定数MysqlCompat :: MysqlRes」からのスタックトレースが生成されます。

「gemupdatemysql」を試しましたが、コンパイラがmysql_clientライブラリを見つけられないため、ネイティブ拡張を構築できないことがわかりました。そのライブラリ(libmysqlclient.so.16)は/ usr/libにあります。

buntu 10.04の修正:

ルートとして、私はこれらを行いました:

apt-get install libmysqlclient-dev
gem install mysql

何人かの人々がここで物事を試みていることに気づき、根本的な原因を突き止めていないのではないかと思います。

人々が答えで明確にする必要がある変数:

  • オペレーティングシステムのバージョン-使用しているもののバージョンはどれですか?
  • どこでどのようにmysqlをインストールしましたか?-ここの人々は/ usr/localの下のソースからmysqlをインストールしたようです(私はubuntuパッケージングシステムを介して私のものをインストールしました)
  • あなたは64ビットのubuntuまたは32ビットですか?(私は現在32ビットを使用しています。)
2
Dafydd Rees

Mysql gem(2.8.1)で私は得ていました

初期化されていない定数MysqlCompat :: MysqlRes

-v 2.7を使用すると、完全に機能し、Homebrewを使用してmysqlをインストールした人にとっても

Sudo gem install mysql -v 2.7 --- with-mysql-config =/usr/local/Cellar/mysql/5.1.48/bin/mysql_config

必要に応じてmysqlのバージョンを変更できることに注意してください。

2
garno

ここで他のすべてを試しましたが、それでも問題が発生しました。 MySQL 5.5から5.1にダウングレードすると、修正されました。 (Mac OS X 10.6.5)

1
Edmund
Sudo apt-get install libmysqlclient15-dev
1
wxianfeng

Sudo gem install mysql -v2.7でうまくいくはずです...

1
grosser

(5.9から)mysql 5.1へのダウングレードは、10.6で役立ちました... mysqlとmysql2gemの両方を実行しています。

1
rndrfero

Sudo gem install mysql -v 2.7 --- with-mysql-config =/usr/local/mysql/bin/mysql_configも、新しいSnowLeopardラップトップに移行するときにトリックを実行しました。私はmysqlをインストールするためにMacPortsを使用せず、むしろバイナリを使用し、Archフラグソリューションまたはシンボリックリンクを使用できませんでした。

1
Chris
gem uninstall mysql

gem install mysql -v 2.7 -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

ldconfig /usr/local/mysql/lib/mysql

Rails_ENV=production rake db:migrate --trace

これは私のために働いた。

1
Kialeve

Mysqlとmysql2gemはどちらもRuby 1.9.2で動作し、Rubyを更新して、必要なgemをインストールするだけです。

1

Fedora10からFedora12にアップグレードした後、同じ問題が発生しました。mysqlgemをアンインストールして再度インストールするだけで、問題を修正しました。そのため、MySQLの新しいバージョンに準拠しています。

0
Stan Bright

これは私のために働いたものです。たくさんの投稿を読んだところ、システムRuby installを使用すると、非互換性の問題が発生することがわかりました。

  1. デフォルトを使用しないでくださいRuby install!install Ruby with macports
  2. デフォルトのrubygemsインストールを使用しないでください! macportsでrb-rubygemsをインストールする
  3. mysql 5.1(5.5ではない)を使用します-mysql.com mac.dmg4からインストールされます。

Sudo env ARCHFLAGS = "-Arch x86_64" gem install mysql --- with-mysql-config =/usr/local/mysql/bin/mysql_config

0
djburdick

Sudo gem install mysql -v 2.7 --- with-mysql-config =/usr/local/mysql/bin/mysql_config

私のために完璧に働いた:)

0
André
Sudo gem install mysql -v 2.7 -- --with-mysql-config=/usr/local/mysql/bin/mysql_config 

archフラグとシンボリックリンクが機能しなかったときにも機能しました!ありがとう!

0
user161456
Sudo env ARCHFLAGS="-Arch x86_64" gem install mysql

MysqlサイトからのDmgパッケージは完了です!

0
Jet Abe

Mysqlの依存関係はmms2rとどのように関連していますか?ところで、私はmms2rの作者です。

Mms2r gemspec https://github.com/monde/mms2r/blob/master/mms2r.gemspec はmysqlの依存関係をリストしていません。

0
monde

私は上記のすべてを試しましたが、どれも私にはうまくいきません。 mysqlバージョン2.7をインストールしようとすると、次のエラーが発生します。

Sudo gem install -v=2.7.1 mysql -- --with-mysql-dir=/usr/local/mysql-5.1.39-osx10.5-powerpc/bin/mysql_config
ERROR:  could not find gem mysql locally or in a repository
F107PHD:stepgreen.org tdillahu$ Sudo gem install -v=2.7 mysql -- --with-mysql-dir=/usr/local/mysql-5.1.39-osx10.5-powerpc/bin/mysql_config
Building native extensions.  This could take a while...
ERROR:  Error installing mysql:
    ERROR: Failed to build gem native extension.

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/Ruby extconf.rb --with-mysql-dir=/usr/local/mysql-5.1.39-osx10.5-powerpc/bin/mysql_config
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... no
checking for mysql_query() in -lmysqlclient... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --Ruby=/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/Ruby
    --with-mysql-config
    --without-mysql-config
    --with-mysql-dir
    --with-mysql-include
    --without-mysql-include=${mysql-dir}/include
    --with-mysql-lib
    --without-mysql-lib=${mysql-dir}/lib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-mlib
    --without-mlib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-zlib
    --without-zlib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-socketlib
    --without-socketlib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-nsllib
    --without-nsllib
    --with-mysqlclientlib
    --without-mysqlclientlib


Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/mysql-2.7 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/mysql-2.7/gem_make.out

私の元のエラー:akeは中止されました!初期化されていない定数MysqlCompat :: MysqlRes /vendor/Rails/activesupport/lib/active_support/dependencies.rb:440:in load_missing_constant' /vendor/Rails/activesupport/lib/active_support/dependencies.rb:80:inconst_missing '

0
user187839

Mysqlのバージョンが5.5の場合は、アンインストールする必要があります。 Ruby: http://geryit.com/blog/2011/01/installing-mysql-with-Rails-on-mac-)でmysqlを使用することについての記事を残しましたos-x-snow-leopard /

0
goksel

Mac OS X 10.6.4では、アーキテクチャと構成ディレクトリを指定する必要がありました。

Sudo env ARCHFLAGS="-Arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

0
Paul Schreiber